반응형


문제 : gradle version이 달라서, compile, testCompile로 의존성을 설정하는 것이 안될 때.

 

결론 : 

compile은 implementation으로, testCompile은 testImplementation으로 변경하면 된다.

gradle 7.0 부터는 compile과 runtime을 사용하지 않게 되었기 때문이다.

 

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

 

The Java Library Plugin

The Java Library plugin expands the capabilities of the Java Plugin (java) by providing specific knowledge about Java libraries. In particular, a Java library exposes an API to consumers (i.e., other projects using the Java or the Java Library plugin). All

docs.gradle.org

The compile and runtime configurations have been removed with Gradle 7.0. Please refer to the upgrade guide how to migrate to implementation and api configurations`. - 출처 : gradle 공식 홈페이지 -

 

 

buildscript {
    ext {
        springBootVersion = '2.1.9.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group 'com.jojoldu.book'
version '1.0.4-SNAPSHOT-'+new Date().format("yyyyMMddHHmmss")
sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile("org.springframework.security:spring-security-test")
}

해당 책은 gradle 4.10.2 version을 사용하고 있어서, 의존성을 추가할 때 compile, testCompile을 사용했다. 하지만, 지금은 책이 출간한지 5년 정도가 지났기에.. 나는 gradle 7.1 version을 사용하고 있었다. 그래서 위와 같은 코드를 작성했을 때 오류가 났다.

 

앞서 말한 것처럼, compile을 implementation으로, testCompile을 testImpementation으로 변경하니 빌드가 성공됐다.

 

buildscript {
    ext {
        springBootVersion = '2.1.9.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group 'com.jojoldu.book'
version '1.0.4-SNAPSHOT-'+new Date().format("yyyyMMddHHmmss")
sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web')
    testImplementation('org.springframework.boot:spring-boot-starter-test')
    testImplementation("org.springframework.security:spring-security-test")
}

 

여기서 의문점... 이렇게 gradle 7.1 버젼에서 빌드 하긴 했는데, 나중에 다시 다운그레이드 했을 때는 implementation이 안먹힐 줄 알았는데 그대로 적용이 됐다... 왜지..??

 

 

 

compile, testCompile에 대한 정보 출처

https://velog.io/@g0709-19/Gradle-Could-not-find-method-compile-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95

 

Gradle Could not find method compile() 해결 방법

gradle 7.0 부터 compile 명령은 삭제되었습니다.

velog.io

 

 

 

 

반응형

+ Recent posts