gradle로 빌드 된 오픈 소스 프로젝트로 작업하고 있습니다. IDE (IntelliJ IDEA)에로드하고 프로젝트를 통해 디버깅 할 수있는 (프로젝트) -sources.jar 파일을 생성하고 싶습니다. 파일을 생성 할 수 있으면로드하는 방법을 알고 있습니다.
프로젝트에 사용 가능한 gradle 작업을 살펴 보았고 소스 jar 파일을 생성하는 gradle 작업이 없습니다.
이 프로젝트의 소스 jar 파일을 생성하는 가장 쉬운 방법은 무엇입니까?
컴파일 된 클래스 파일을 포함하는 jar 파일에 소스를 추가하는 것도 좋습니다.
답변
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
}
답변
Android를 사용하는 경우 :
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
에서 여기
답변
컴파일 된 클래스 JAR 파일에 소스 를 추가 하려는 경우 에도이를 충분히 수행 할 수 있습니다. 빌드 파일에 다음을 추가하십시오. 이론적으로 소스를 별도의 JAR에 넣는 솔루션과 매우 비슷하다는 것을 알 수 있습니다.
jar {
from sourceSets.main.allSource
}
차이점은 sourcesJar 대신 “jar”라고 말하여 기본 JAR 파일에 추가한다는 것입니다.
답변
Gradle 6.0 현재 솔루션
Gradle 6.0 이상 에서 java
/ java-library
플러그인 을 사용한다고 가정하면 sourcesJar
다음 구성을 사용하여 작업을 수행 할 수 있습니다.
java {
withSourcesJar()
// and/or analogously use “withJavadocJar()” to get a “javadocJar” task
}
maven-publish
/ ivy-publish
플러그인 을 추가로 사용하는 경우 (현재 권장 됨)*-sources.jar
기본 Java 발행물과 함께 아티팩트 .
Gradle 문서 도 참조하십시오 .
답변
이 작동합니다
assemble.dependsOn 'propertyJar'
task propertyJar(type: Jar) {
archiveName = "myJarName.jar"
from('src/main/resources') {
include '**'
}}
답변
Kotlin DSL은 다음과 같습니다.
tasks {
val sourcesJar by creating(Jar::class) {
dependsOn(JavaPlugin.CLASSES_TASK_NAME)
classifier = "sources"
from(java.sourceSets["main"].allSource)
}
val javadocJar by creating(Jar::class) {
dependsOn(JavaPlugin.JAVADOC_TASK_NAME)
classifier = "javadoc"
from(java.docsDir)
}
artifacts {
add("archives", sourcesJar)
add("archives", javadocJar)
}
}
답변
사용할 때:
- 그래들 : 5+
java
및maven-publish
플러그인
task sourceJar(type: Jar) {
from sourceSets.main.allJava
archiveClassifier = "sources"
}
publishing {
publications {
maven(MavenPublication) {
from components.java
artifact sourceJar
}
}
}
https://docs.gradle.org/current/dsl/org.gradle.api.publish.maven.MavenPublication.html