이 소스 (예 : 프로젝트 a
)에서 Java 소스와 jar 세트를 생성하는 작업이 있습니다. 이 jar 파일을 종속 프로젝트 (예 : b
프로젝트)로 내보내고 싶습니다. 종속성이 아직 생성에는 항아리가 없을 때 generateJars
작업을 실행해야한다는 Gradle을 말하지 않는 한 그것은 그 추가 generateJars.outputs.files
제외하고, 확인을 작동Gradle - 프로젝트 종속성에 작업의 출력을 포함 할 수 있습니까?
//a.gradle
configurations{
generatedJars
}
task generateJars(type: JavaExec) {
//generate jars ...
outputs.files += //append generated jars here
}
dependencies{
generatedJars generateJars.outputs.files
}
//b.gradle
dependencies{
project(path: ':a', configuration: 'generatedJars')
}
: 그래서 여기에 내가 지금 무슨 약입니다. 작업 자체를 종속성으로 추가하려고 시도했습니다. 예를 들어, 유물 구성 (예 : artifacts{ myJarTask }
)에 jar/zip 작업을 추가 할 때와 동일한 방식으로 작동하지만, 수행 할 수 없다는 오류가 발생합니다. 그. 물론 :b
이 평가되기 전에 generateJars
작업을 빌드 프로세스의 어딘가에 삽입 할 수는 있지만 어색하고 취약하기 때문에이를 피하고 싶습니다.
생성 된 jars를 프로젝트의 artifacts{ ... }
에 추가해야한다고 생각하지만, 종속 프로젝트에 표시하는 방법을 잘 모르겠습니다. 이것을 성취 할 수있는 더 좋은 방법이 있습니까?
종속 프로젝트 (프로젝트 b
)는 프로젝트 a
의 생성 된 jar를 가리 키도록 IntelliJ IDEA 모듈 클래스 경로 설정을해야합니다. 오히려이 (의사 코드) 같은 것을 : 지금까지 내가 :a
의 generatedJars
:b
에서의 프로젝트 실행 종속을 추가 단순히 시도하지만, 아이디어 플러그인은 단순히 모듈 종속성으로 모듈 :a
를 추가하고 있다고 가정
//b.gradle
idea{
module{
scopes.COMPILE.plus += project(path: ':a', configuration: 'generatedJars').files
}
}
을 생성 된 jar 파일을 내 보냅니다 (올바른 가정 일 수 있음). 따라서 생성 된 jar 파일을 :b
의 classpath에 추가하지 마십시오.
도움이 될 것입니다.
감사합니다. 'artifacts '에 태스크를 추가하는 것은 모듈 내에서 훌륭하게 작동하지만, 프로젝트 b에서 (프로젝트를 공개하지 않고) 어떻게 그 jar를 참조 할 수 있는지 알지 못합니다. 예, 소스를 생성하여 모듈 소스로 내보낼 수 있습니다. 이것은 효과가 있지만 IDEA를위한 추가 작업을 생성하므로 어떻게 든 피할 수 있기를 바랬습니다. 'ideaModule -> generateJars' 후킹을 잘하려면'b : ideaModule -> a : ideaModule'을 추가해야하며,이 작업을 수행하는 데 필요한 모듈이 약 3 개 있습니다. 어떻게 든 자동 해상도로 설정할 수 있기를 바랬습니다. – rodion
광고 1. '프로젝트 (경로 :'a ', 구성 :'생성 된 Jars ')' –
광고 2. '추가 작업'에 문제가 있습니까? (생성되지 않은 코드에 대해 동일한 인수를 사용할 수 있습니다.) 어쨌든 JavaExec 작업보다는 Gradle을 사용하여 파일을 컴파일해야합니다. –