[compileOnly vs rumtimeOnly]

compileOnly : compile시 필요한 library. compileClasspath 에만 들어감 (대표적으로 lombok)

runtimeOnly : rumtime시 필요한 library. runtimeClasspath 에만 들어감 (대표적으로 h2database)

 

[compile(api) vs implementation]

implementation : 지정한 라이브러리만 빌드

compile : 의존하고 있는 상위 라이브러리 까지 빌드

* compile 키워드는 gradle 7.x 부터 deprecated 되었음 (api 로 대체)

 

A > B > C 의존성을 갖는 상황, C 가 변경되었을 때

compile : A, B 까지 rebuild

implementation : B 만 rebuild 

* compile(api) 은 프로젝트가 무거워지므로 사용을 지양할 것

https://kotlinworld.com/317

https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fa

https://stackoverflow.com/questions/44413952/gradle-implementation-vs-api-configuration

 

annotationprocessor : 

 

https://tomgregory.com/annotation-processors-in-gradle-with-the-annotationprocessor-dependency-configuration/#:~:text=Annotation%20processing%20is%20a%20Java,such%20as%20classes%20or%20documentation.

 

 

 

https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_configurations_graph

 

 

 

반응형

 

[ jar 빌드 ]

apply plugin: 'java'
@SpringBootApplication
public class Application {
   //jar
   public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
   }
}

 

[ war 빌드 ]

내장 tomcat 의 scope를 runtime 으로 바꿔준다

apply plugin: 'war'

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
   //war
   @Override
   protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
      return application.sources(Application.class);
   }

   public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
   }
}

 

 

반응형

'back' 카테고리의 다른 글

[Java] 일급콜렉션 : First Class Collection  (0) 2022.10.06
[TDD] 테스트주도개발  (0) 2022.10.04
JWT  (0) 2020.11.18

+ Recent posts