添加到子项目到gradle jar

时间:2014-04-30 15:51:09

标签: java gradle

如何将使用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'
}

3 个答案:

答案 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插件。