여러 패키지가있는 gradle 프로젝트가 있습니다. 빌드가 끝나면 각 패키지는 build/libs에 jar 파일을 생성합니다. 외부 jar 종속성은 ~/.gradle로 가져옵니다. 이제 적절한 클래스 경로를 사용하여 명령 줄에서 로컬로 서비스를 실행하고 싶습니다. 이를 위해 클래스 패스를 구성하는 스크립트를 작성했습니다. 문제는 스크립트가 모든 외부 종속성을 이해하지 못하므로 클래스 경로를 구성 할 수 없다는 것입니다. 이걸 도와 줄 gradle을위한 방법이 있습니까? 이상적으로, 나는 모든 종속성을 빌드가 끝난 폴더에 덤프하고 싶습니다.Gradle 프로젝트의 클래스 경로는 어떻게 생성합니까?
답변
당신은 당신의 빌드 스크립트에서 이런 식으로 뭔가를 시도 할 수 있습니다 : 그것은 이미 돌봐 이후
// add an action to the build task that creates a startup shell script
build << {
File script = file('start.sh')
script.withPrintWriter {
it.println '#!/bin/sh'
it.println "java -cp ${getRuntimeClasspath()} com.example.Main \"\[email protected]\""
}
// make it executable
ant.chmod(file: script.absolutePath, perm: 'u+x')
}
String getRuntimeClasspath() {
sourceSets.main.runtimeClasspath.collect { it.absolutePath }.join(':')
}
첫째, 내가의 application plugin 할 수 있다면을 사용하는 것이 좋습니다 것입니다. 당신이 실제로 디렉토리에 클래스 패스에있는 모든 라이브러리를 복사 할 경우, 당신이 할 수있는
task writeClasspath << {
buildDir.mkdirs()
new File(buildDir, "classpath.txt").text = configurations.runtime.asPath + "\n"
}
:
파일로 자신을 클래스 패스를 덤프하려면 가장 간단한 방법은 무엇인가 같다 :
task copyDependencies(type: Copy) {
from configurations.runtime
into new File(buildDir, "dependencies")
}
답해 주셔서 감사합니다. 응용 프로그램 플러그인을 사용하는 경우 JVM 설정을 어떻게 제어합니까? 커맨드 라인에서 전달 된 특정 설정으로 JVM을 시작하고 싶습니다. 응용 프로그램 플러그인이이를 구성하는 데 도움이된다면 유용 할 것입니다. –
찾았습니까? -http : //www.gradle.org/docs/current/dsl/org.gradle.api.Project.html#N13953. 이걸 가지고 놀고 내가 원하는대로 할 수 있는지 알아 봅시다. –
나는 제대로 작동하지 못했습니다. 응용 프로그램 플러그인을 추가하고 기본 클래스 이름을 지정했습니다. gradle 실행을 실행하면 클래스를 찾을 수 없습니다. 오류가 발생합니다. 또한 클래스 및 리소스 폴더가 만들어지지 않으므로 오류가 발생합니다. gradle 실행 문제는 /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/bin/java -Dfile.encoding = UTF-8 -cp/Users/name/gradleproject/build/classes/main입니다. :/Users/name/gradleproject/build/resources/main MainClass –
- 1. Melt 앱의 탐색 경로는 어떻게 생성합니까?
- 2. 클래스 경로는
- 3. Gradle 프로젝트의 Maven 종속성
- 4. gradle 프로젝트의 빌드가 실패했습니다.
- 5. Android 플러그인을 사용하여 gradle 프로젝트의 클래스 경로를 얻으십시오.
- 6. Java JAR 기본 클래스 경로는 어떻게 생겼습니까?
- 7. Mac에서 Java 클래스 경로는 어떻게 설정됩니까?
- 8. 부트 스트랩 클래스 경로는
- 9. Android Studio 프로젝트의 gradle 디렉토리
- 10. Gradle - Java 프로젝트의 여러 종속성
- 11. Spring 프로젝트의 추가 Gradle 작업
- 12. Maven2 : 프로젝트의 종속성 이름이 들어있는 파일을 어떻게 생성합니까?
- 13. 내 프로젝트의 올바른 상대 경로는 무엇입니까?
- 14. gradle, 라이브러리 프로젝트의 기본 리소스를 설정하십시오.
- 15. Teamcity 이슈 경로는 어떻게 작동합니까?
- 16. android gradle 프로젝트의 맛을 어떻게 설정 하시겠습니까? 신비한 중복 클래스 오류
- 17. Eclipse 프로젝트의 클래스 경로에 logging.properties를 어떻게 추가합니까?
- 18. 레일 : 경로는 어떻게 생성됩니까?
- 19. emberjs 경로는 어떻게 테스트합니까?
- 20. SKMapInitSettings의 경로는 어떻게 초기화해야합니까?
- 21. 핌코 경로는 어떻게 작동합니까?
- 22. URL 경로는 어떻게 변경합니까?
- 23. 추가 경로는 어떻게 추가합니까?
- 24. 해시가없는 경로는 어떻게 만드나요?
- 25. Express.js 경로는 어떻게 처리합니까?
- 26. 개미의 런타임 클래스 경로는 javac의
- 27. Windows의 클래스 경로는 어디에 있습니까?
- 28. IntelliJ 어떻게 새 클래스를 생성합니까?
- 29. Gradle을 사용하는 빌드 경로는 어디입니까
- 30. Android Studio 프로젝트의 잘못된 버전 Gradle
감사합니다. 그것은 유망 해 보인다. build.gradle 파일의 아무 곳에 나 추가 할 수 있습니까? 또한 이상적으로 어딘가에 클래스 경로를 덤프하고 스크립트에서 파일의 내용을 참조하게하고 싶습니다. 그게 나에게 많은 일을 해주고 스크립트의 일부가 될 필요는 없다. –
나는 내가 뭘 시도했는지와 내가 본 오류를 보여주기 위해 질문을 업데이트했다. –
'sourceSets.main.runtimeClasspath'는 기본적으로 [FileCollection'] (http://www.gradle.org/docs/current/javadoc/org/gradle/api/file/FileCollection.html)이며 참조하는 File 객체를 포함합니다 1) 출력 폴더 ('build/classes/main','build/references/main' 등)와 2) 외부 저장소에있는 외부 jar 의존성을 빌드합니다.이 콜렉션을 반복하고 jar 파일을 쉽게 복사 할 수 있습니다 임의의 폴더에. – zagyi