Gradle Jar-包含依赖项的类 - java

我正在开发服务器应用程序,并为此使用gradle。如果我运行“ bundle”,gradle将创建一个jar文件,其中包含我项目的所有已编译Java类。但是,显然,由于缺少依赖项,您无法运行此jar。

我目前有这些任务:

task bundleJar(type: Jar) {
    manifest {
        attributes 'Main-Class': 'your.own.start.main.class'
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}

但这包括“所有”依赖项类。是否可以仅集成我的应用程序所需的类?他们的思考有问题吗?

我想到的另一件事。一些库不允许将它们运送到另一个应用程序中。因此,我仅将源代码提供给我的用户。他们下载并执行gradle任务。这样应该可以,不是吗?
将所有东西都捆绑在一个罐中是否更好,还是可以为所需的类创建单独的文件夹?

谢谢:)

参考方案

在您的示例中,您执行configurations.compile.collect,以便将编译范围中的所有内容都压缩。您可以使用运行时作用域(configurations.runtime.collect)中声明的类进行更改。确保这意味着在进行构建时这些类已经被下载。

Java:javaagent无法访问tools.jar - java

我正在开发一个Java代理,它通过tools.jar之类的反射使用com.sun.tools.javac.util.Options中的某些类。为了测试我的代理,我要设置set JAVA_TOOL_OPTIONS=-javaagent:path-to-my-agent-jar并在将Java代理挂接到的简单gradle项目上启动构建。我已将tools.jar添加…

gradle ignoreFailures测试属性 - java

我的build.gradle文件如下所示:apply plugin: "java" ... test { ... ignoreFailures = "$ignoreFailureProp" } 和一个gradle.properties与ignoreFailureProp=false 当执行gradle clean bu…

Gradle:如何使用并行项目配置多项目设置 - java

我们有一个像这样的旧项目:. ├── customizationProject │   ├── ejb │   └── services ├── projectA │   ├── ejb │   └── shared ├── projectB │   └── ejb └── projectC ├── ejb └── services 这个想法是,custom…

如何列出JAR的依赖项 - java

有没有一种工具可以列出包含JAR中引用的(第三方)类的第三方“软件包”?假设它将从JAR文件定义中识别出什么是“home”包,并且它将打印出JAR中所引用的第三方类的完全合格名称(直到第3级)的列表。org.apache.commons org.apache.maven javax.servlet.jsp org.eclipse.persistence or…

使用Launch4j,何时应该包装Jar? - java

我是Launch4j的新手。默认情况下,它“包装”罐子,但是有一个复选框显示为“不包装罐子,仅启动”。我何时应选中此框?什么时候不应该选中此框? 参考方案 唯一的区别是,当您选中此选项时,jar文件未打包在生成的可执行文件中,并且它旁边需要jar文件。因此,如果要向用户隐藏jar并只有一个可执行文件,则不要选中该框,如果愿意将可执行文件和jar文件分开,则应…