我正在使用一个用gradle构建的开源项目 . 我想生成一个(项目)-sources.jar文件,我可以将其加载到我的IDE(IntelliJ IDEA)并通过项目进行调试 . 如果我可以生成它,我知道如何加载文件 .
我查看了项目的可用gradle任务,但没有一个生成源jar文件 .
为此项目生成源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 }
来自here
如果您希望将源添加到已编译的类JAR文件中,您也说这是可以接受的,您可以轻松地完成此操作 . 只需将以下内容添加到构建文件中即可 . 您可以看到,从理论上讲,它非常类似于将源放入单独的JAR的解决方案:
jar { from sourceSets.main.allSource }
不同之处在于您通过使用“jar”代替sourcesJar将其添加到主JAR文件中 .
这应该工作
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 回答
如果您使用的是Android:
来自here
如果您希望将源添加到已编译的类JAR文件中,您也说这是可以接受的,您可以轻松地完成此操作 . 只需将以下内容添加到构建文件中即可 . 您可以看到,从理论上讲,它非常类似于将源放入单独的JAR的解决方案:
不同之处在于您通过使用“jar”代替sourcesJar将其添加到主JAR文件中 .
这应该工作
Kotlin DSL等价物将是: