我想有一个胖罐子,但没有提供的依赖项。所以我使用了以下两个插件:
apply plugin: 'nebula.provided-base'
apply plugin: 'com.github.johnrengelman.shadow'
archivesBaseName = 'range-cache-drivers'
group = 'com.engine'
version = '0.302-SNAPSHOT'
buildDir = 'target'
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
provided project(':rangeCache')
// CSV, TSV, Fixe width
compile deps.univocityParsers
// MongoDB
compile deps.mongo
// Cassandra
compile deps.cassandradx
compile deps.cassandraSnappy
compile deps.cassandraLZ4
}
编辑1:这似乎也不起作用,暂时的依赖项仍然被复制到fat jar中。
shadowJar {
dependencies {
exclude(project(':rangeCache'))
}
}
编辑2:基于斯坦尼斯拉夫的回答,我做了以下工作,使事情正常运行:
configurations {
shadow
compile.extendsFrom provided
provided.extendsFrom shadow
}
dependencies {
provided project(':rangeCache')
// CSV, TSV, Fixe width
shadow deps.univocityParsers
// MongoDB
shadow deps.mongo
// Cassandra
shadow deps.cassandradx
shadow deps.cassandraSnappy
shadow deps.cassandraLZ4
testCompile deps.junit
}
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
task fatJar(type: ShadowJar) {
configurations = [project.configurations.shadow]
from(project.sourceSets.main.output)
}
简而言之,根据本文,仅仅通过shadowjar
的依赖项排除某些依赖项还不足以排除它的传递依赖项,正如您已经提到的。解决方法是修改运行时配置,从其中排除一些依赖关系,如:
configurations {
runtime.exclude %what you need to exclude%
}
希望能有所帮助。
我想要一个胖罐子,但是没有提供的依赖项。因此,我使用以下两个插件: https://github.com/johnrengelman/shadow 还有一个身材。如下所示的渐变文件: 但是,当我运行时,我的胖罐子中仍然有所有的rangeCache类。如何从我的胖罐子中排除提供的依赖项? 编辑1:这似乎也不起作用,暂时的依赖仍然被复制到胖罐子里。 编辑2:根据Stanislav的回答,我做了以下工作
我有这样的build.gradle文件: 并且构建任务成功执行: 而在C:\ Users \ admin . gradle \ caches \ modules-2 \ files-2.1 \ javax . persistence \ persistence-API \ 1 . 0 . 2 \ 8中...一个Gradle下载了archive persistence-API-1 . 0 . 2 .
我正试图让maven下载所有的依赖项(编译、测试、插件等)。)这样我就可以避免让我们的dockerized构建浪费不必要的时间一遍又一遍地下载它们。 我们已经对maven build进行了dockerized,这样我们就可以从jenkins运行它,而无需在jenkins机器上安装大量构建特定的依赖项(Java、redis、maven依赖项等)。我们的构建依赖于增量docker构建,它只执行实际需要
我有一个J2ee项目,它使用了诸如Jsf、EJB、持久性API等技术。但是我怎么知道这些模块需要的wich版本。例如: 现在,我在maven中央存储库中查找这些信息:GroupId、ArtifactID和最新版本。但有一个更简单的方法做到这一点?
我正在尝试编译几个WAR文件,所有这些都依赖于一个公共的JAR模块。然而,在我的Gradle构建中,我似乎无法获得类似于“提供”的依赖关系来使用Java插件。 然而,最后这一位将生成具有适当依赖关系的变量newRuntime,然而,当我试图将该变量重新分配回运行时配置时,它抛出一个“无法找到属性异常”。 我在Gradle的bug跟踪中发现了很多关于这个问题的讨论:Gradle-784 然而,这方面
目前,要为Pax考试设置配置,我发现需要包含所有依赖项。比如说 但是由于依赖于,这感觉像是重复的信息。Pax Exam是否可能在不明确添加的情况下发现需要?