依赖的 jar 包未与项目 jar 包一起打包,Gradle。

9
我有两个项目,一个是 corehibernate,另一个是 coregeneralcorehibernate 依赖于 coregeneral。我需要将 coregeneral 的 jar 文件与 corehibernate 的 jar 文件捆绑在一起。我尝试了各种版本的 build.gradle,但都没有成功。我尝试了 compile files("../coregeneral/build/libs/coregeneral.jar") 这个版本的 fatJar 也不起作用。
apply plugin: 'java'

repositories {
    jcenter()
}

dependencies {
    compile (':coregeneral')
    testCompile 'junit:junit:4.12'
}

jar {
    baseName='corehibernate'
    from ('bin')
}

task fatJar(type: Jar, dependsOn: jar) {
  baseName = project.name + '-fat'
}

“Shadow jar”插件可以做到这一点 - http://imperceptiblethoughts.com/shadow/ - Alexiy
我不需要可执行的jar文件,我需要一个库jar文件。 - Siddharth
你不必将其用作可执行文件。唯一的区别在于清单文件中的条目。 - RaGe
你的 fatJar 任务除了给 jar 文件取一个新名字之外,什么都没做。请参见这里:https://www.mkyong.com/gradle/gradle-create-a-jar-file-with-dependencies - RaGe
1个回答

1

如何将项目捆绑在一起有两种基本方法。第一种方法是使用应用程序插件,它会创建一个zip文件,其中包含脚本,这些脚本也会执行您的应用程序并默认捆绑所有jar文件。第二种方法是使用分发插件并自己定义最终归档文件(zip或tar)。

以下是使用应用程序插件的示例项目:

settings.gradle

rootProject.name = 'root'
include 'partone', 'parttwo'

build.gradle

subprojects {
    apply plugin: 'java'
}

partone/build.gradle - 这个是空的

parttwo/build.gradle

apply plugin: 'application'

mainClassName = 'Hello'

dependencies {
    compile project (':partone')
}

考虑到这两个项目都有一些内容(类),当你运行gradle :projecttwo:build时,它会生成一个包含可执行脚本和两个jar包的zip文件。

如果您更喜欢使用分发插件,请将parttwo/build.gradle更改为:

apply plugin: 'distribution'

distributions {
    main {
        contents {
            from jar
            from (project.configurations.runtime)
        }
    }
}

dependencies {
    compile project (':partone')
}

再次运行gradle :parttwo:build。它将创建一个包含两个jar文件的zip文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接