나는 다음과 같은 종속 구조의 Gradle을 프로젝트가 제외되지 않습니다. 그것이 (내가 이야기하고 정확한 라이브러리를 제공 할 수 있지만, 내 질문에 무관의) other:transitive:1.1
와 런타임에 충돌과 수동으로 제외해야하므로 그룹 ID 및 이슈 ID가 다른 때문입니다Gradle을 생각 플러그인 제외 이적 의존성은
configurations.all {
exclude group: 'some', module: 'transitive', version: '2.1'
}
종속성이 올바르게 제외되었습니다 (dependencyInsight
작업을 실행하여 알 수 있습니다). 내가 런타임 충돌을 트리거 할 some:other:1.0
에서 코드를 사용 module2
에서 테스트를 작성하는 경우 단지는 제외되어 있기 때문에, 그것은 Gradle을을 사용하여 성공적으로 실행됩니다 :
gradle :module2:test -Dtest.single=SomeTest
지금은 인 IntelliJ (12)를 사용하고 (그래서 가난한 Gradle을 통합) 그리고 Gradle idea
플러그인을 사용하여 .ipr 및 .iml 파일을 생성합니다. 모든 것이 잘 작동합니다.
그러나 IDE에서 SomeTest
을 실행하면 위에서 언급 한 충돌로 인해 런타임 충돌이 발생합니다.
-classpath ...:/path/to/jar/some/transitive/2.1/some-transitive-2.1.jar:...
가 그래서 내 질문이있다 : 나는이 전이 종속성을 추가하는 IntelliJ를 방지 할 방법이 가정되지 않은 IDE 테스트 클래스 경로를 보면 나는 그것이 사실은 (다른 사람의 사이에서) 제외 된 단지를 포함 참조 ? 그냥 완전성에 대한
, 여기 (가 부적절 비록이 토론) 제가 이야기 충돌의 저지와 ASM 4.1 (뉴저지 간의 비 호환성으로 인해 발생
java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.glassfish.jersey.server.ResourceConfig.scanClasses(ResourceConfig.java:875)
at org.glassfish.jersey.server.ResourceConfig._getClasses(ResourceConfig.java:840)
at org.glassfish.jersey.server.ResourceConfig.getClasses(ResourceConfig.java:755)
at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1171)
at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1144)
at org.glassfish.jersey.server.ResourceConfig.createRuntimeConfig(ResourceConfig.java:1140)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:299)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:272)
at org.glassfish.jersey.test.JerseyTest.<init>(JerseyTest.java:142)
at com.mypackage.rest.SomeTest.<init>(RestServiceTest.java:19)
는 3.3.1을 사용하는 서로 다른 그룹 id를 가짐)은 다른 모듈로부터 가져온 전이 의존성이다.
IDEA 13은 Gradle 통합 기능이 훨씬 뛰어나다는 것을 알고 있지만 (a) 12 개 라이센스가 있으며 모든 개발팀을 곧 업그레이드하지는 않습니다. (b) IDEA 13에는 여전히 몇 가지 문제가 있습니다. polyglot Gradle 프로젝트 (Java/Scala)이므로 빌에 맞지 않습니다.
불행히도 내가 허용 할이 작품을 누구나 확인할 수 있다면 더 이상 Gradle을 사용하지 않을 것입니다. 감사! –
이것은 작동하지 않습니다. 저는 방금 OP 2.3과 비슷한 설치에서 Gradle 2.3과 Intellij IDEA 14.1.2를 확인했습니다. –