如何将使用project(':api')
引用的子项目添加到jar gradle构建?
这是我主要项目的build.gradle
。该子项目包含为git子模块,并具有类似的buildcript。
apply plugin: 'java'
sourceCompatibility = 1.5
version = '1.0'
jar {
manifest {
attributes('Main-Class': '..........')
}
}
repositories {
mavenCentral()
}
dependencies {
compile files('libs/jfxrt.jar')
compile project(':api')
testCompile group: 'junit', name: 'junit', version: '4.11'
}
答案 0 :(得分:3)
我自己想出来了。
在主jar中包含子项目的来源:
sourceSets {
main {
java {
srcDir project(':api').file('src/main/java')
}
}
}
在主jar中包含jar的类:
jar {
from zipTree('libs/abc.jar')
}
答案 1 :(得分:2)
尝试将classpath添加到清单文件中。您需要拥有目录(以下示例使用" lib")来保留项目所依赖的jar文件。
尝试修改" jar"在gradle中阻止构建到这样的东西。我有一些额外的属性只是为了演示。但重要的是Class-Path
jar {
manifest.attributes(
'Class-Path': lib/api.jar
'Built-By': System.getProperty('user.name'),
'Built-JDK': System.getProperty('java.version'),
'Built-OS': System.getProperty('os.name'),
'Built-DATE': buildDate,
)
}
我希望有助于解决您的问题。
答案 2 :(得分:0)
在最简单的情况下,可以按如下方式创建胖Jar:
主/的build.gradle:
jar {
from configurations.runtime
}
还有其他更强大的解决方案,例如“主要”方法样式应用程序的gradle-one-jar插件。