使用Gradle创建可运行的JAR文件

194

之前我是通过Eclipse的“导出”功能创建可运行的JAR文件,但现在我已经切换到了IntelliJ IDEA和Gradle用于构建自动化。

这里有一些文章建议使用“应用程序”插件,但这并没有完全达到我期望的结果(只是一个JAR文件,没有启动脚本或类似的东西)。

如何才能达到与Eclipse的“导出”对话框相同的结果?

12个回答

1

以下是我尝试使用Gradle 6.7的解决方案

可运行的fat Jar(将所有依赖库复制到jar中)

task fatJar(type: Jar) {
   
    manifest {
        attributes 'Main-Class': 'com.example.gradle.App'
    }
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    } with jar
    
}

将所有依赖项复制到目录并将类路径添加到清单文件中的可运行jar包

    def dependsDir = "${buildDir}/libs/dependencies/"
    task copyDependencies(type: Copy) {
        from configurations.compile
        into "${dependsDir}"
    }
    task createJar(dependsOn: copyDependencies, type: Jar) {
      
        manifest {
            attributes('Main-Class': 'com.example.gradle.App',
                    'Class-Path': configurations.compile.collect { 'dependencies/' + it.getName() }.join(' ')
            )
        }
        with jar
    }

如何使用?

  • 将上述任务添加到build.gradle中
  • 执行gradle fatJar//创建fatJar
  • 执行gradle createJar//创建包含依赖项的jar文件。

更多详情:https://jafarmlp.medium.com/a-simple-java-project-with-gradle-2c323ae0e43d


0
  1. 将主类配置到您的清单文件中

如果您正在使用Gradle项目,只需将以下内容添加到您的build.gradle文件中即可:

jar {
    manifest {
        attributes(
               'Main-Class': 'pokerhandscorer.PokerHandScorer'
        )
    }
}
  • 其中'pokerhandscorer'是包名,PokerHandScorer是主类名

这将在\build\libs目录下创建一个jar文件:{jarFilename}.jar

  1. 使用java -jar /{path}/{jarFileName.jar}运行jar文件

java -jar /{path}/{jarFileName.jar}


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