Java 将子项目添加到gradle jar

Java 将子项目添加到gradle jar,java,gradle,Java,Gradle,如何将使用project(':api')引用的子项目添加到jar-gradle构建中 这是我主要项目的build.gradle。子项目包含为git子模块,并具有类似的构建脚本 apply plugin: 'java' sourceCompatibility = 1.5 version = '1.0' jar { manifest { attributes('Main-Class': '..........') } } repositories { m

如何将使用
project(':api')
引用的子项目添加到jar-gradle构建中

这是我主要项目的
build.gradle
。子项目包含为git子模块,并具有类似的构建脚本

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'
}

尝试将类路径添加到清单文件。您需要有一个目录(下面的示例使用“lib”)来保存项目所依赖的jar文件

尝试将gradle构建中的“jar”块修改为类似的内容。我有一些附加属性只是为了演示。但重要的是类路径

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,
    )
}

我希望这有助于解决您的问题。

在最简单的情况下,可以按如下方式创建胖罐子:

main/build.gradle:

jar {
    from configurations.runtime
}

还有其他更健壮的解决方案,比如“main”方法风格应用程序的插件。

我自己找到了

在主jar中包括子项目的源:

sourceSets {
    main {
        java {
            srcDir project(':api').file('src/main/java')
        }
    }
}
jar {
    from zipTree('libs/abc.jar')
}
在主jar中包括jar的类:

sourceSets {
    main {
        java {
            srcDir project(':api').file('src/main/java')
        }
    }
}
jar {
    from zipTree('libs/abc.jar')
}

请参阅中的
多项目构建
一章,以及完整Gradle发行版中的示例。我已经尝试过了,但无法将子项目的类路径添加到主jar中。因此构建已经可以工作了,您的问题是如何创建胖jar?构建工作正常。问题是启动jar会导致
java.lang.ClassNotFoundException
,因为缺少子项目的类。您解决了这个问题吗?这不是我想要的。我希望子项目的源代码包含在主jar中,以便构建一个包含两个项目的类的jar。