繁体   English   中英

如何创建仅具有项目依赖项而没有项目类的Jar文件?

[英]How to create a Jar file with only project dependencies, without project classes?

我有一个使用某些依赖项的Java项目,例如Commons,HttpClient,SQLite。

我想在Gradle中创建两个构建任务:

  1. 第一个允许我仅使用Commons,HttpClient和Sqlite构建Jar文件,而无需使用我的项目,

  2. 第二个将允许我仅使用我的项目来构建一个Jar文件。 我猜这是默认的构建操作行为,所以我已经知道该怎么做:)

我也知道如何将项目和依赖项一起创建一个Jar文件(“胖子jar”),但是所得的Jar文件很大,我所有的依赖项都组合在一起(〜14mb)。

我的问题的原因是我正在远程服务器上测试该应用程序。 我的想法是,每隔几天(依赖关系将发生变化),我只会偶尔上传一次“带有依赖项的jar”,而每隔几个版本就上传一次“应用程序jar”。 现在,我每次上传都等待几分钟,而我想等待几秒钟。

在Gradle中有可能吗?

这是我当前的gradle配置:

apply plugin: 'java'

buildscript {
    repositories {
        mavenCentral()
    }
}

repositories {
    mavenCentral()
}

task fatjar(type: Jar) {
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }

    baseName = project.name + "-all"

    with jar
}

compileJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

dependencies {
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2.2'
    compile 'org.hjson:hjson:1.0.0'
    compile group: 'commons-cli', name: 'commons-cli', version: '1.3.1'
    compile group: 'commons-io', name: 'commons-io', version: '2.4'
    compile group: 'org.java-websocket', name: 'Java-WebSocket', version: '1.3.0'
    compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.3'
    compile group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.6'
    compile group: 'org.json', name: 'json', version: '20160810'
    compile group: 'org.xerial', name: 'sqlite-jdbc', version: '3.16.1'
    compile group: 'org.zeromq', name: 'jeromq', version: '0.4.0'
    compile group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '4.23'
    compile group: 'ws.wamp.jawampa', name: 'jawampa-core', version: '0.5.0'
    compile group: 'ws.wamp.jawampa', name: 'jawampa-netty', version: '0.5.0'
}

编辑 :添加更多的上下文到问题。

你可以删除

with jar

从您的任务中,这就是将项目jar文件的内容包含到胖jar中的内容。 请参阅文档

我知道您的问题是关于Gradle的,但是对于希望在Maven中完成此页面的人,可以使用以下针对maven-shade-plugin的配置来完成此操作:

<artifactSet>
    <excludes>
        <exclude>${project.groupId}:${project.artifactId}</exclude>
    </excludes>
</artifactSet>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM