Java 无法排除jar中的依赖项
我有一个项目(B),它编译一个本地jar(a)。我需要排除jar(a)中的依赖项,但在构建jar时我不能这样做。我可以随心所欲地构建jar,但我必须在其中包含这些依赖项,并且只在项目B中排除它们 这是build.gradle项目A的jar:Java 无法排除jar中的依赖项,java,intellij-idea,gradle,build.gradle,Java,Intellij Idea,Gradle,Build.gradle,我有一个项目(B),它编译一个本地jar(a)。我需要排除jar(a)中的依赖项,但在构建jar时我不能这样做。我可以随心所欲地构建jar,但我必须在其中包含这些依赖项,并且只在项目B中排除它们 这是build.gradle项目A的jar: apply plugin: 'java' apply plugin: 'idea' apply plugin: 'application' repositories { mavenCentral() } jar { baseName =
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'application'
repositories {
mavenCentral()
}
jar {
baseName = 'test'
version = '0.1.0'
manifest {
attributes ("Main-Class": "Main")
}
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web:1.4.0.RELEASE") // I need this excluded later
compile("org.springframework.boot:spring-boot-starter-jetty:1.4.0.RELEASE") // I need this excluded later
/*
some other dependencies here
*/
}
这是项目B的build.gradle:
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'application'
repositories {
mavenCentral()
flatDir(dirs: "lib")
}
sourceCompatibility = 1.8
dependencies {
compile ':test:0.1.0' // this is the jar I need to exclude some things from
compile("org.springframework.boot:spring-boot-starter-web:1.4.0.RELEASE")
compile("org.springframework.boot:spring-boot-starter-jetty:1.4.0.RELEASE")
}
使用常规排除子句似乎不起作用
compile (':test:0.1.0') {
exclude group: 'org.springframework.boot' // doesn't work
}
任何帮助都将不胜感激。我的答案来自。显然,从文件存储库中读取
group
等属性是不可能的。我最终将依赖项发布到了一个私有存储库(并从那里导入)。我从那里得到了答案。显然,无法从文件存储库读取组等属性。我最终将依赖项发布到了一个私有存储库(并从那里导入。我明白你的意思。基于组的排除不适用于flatDir回购,因为flatDir没有组信息。
因此,最好将“test:0.1.0”jar包含在libs文件夹ProjectB中,而不是将其添加到flatDir repo中。
因此,通过使用fileTree,我们可以获得ProjectB的依赖项ProjectA(测试:0.1.0JAR)。
从文件树中,我们可以排除jar中的依赖项(a)。
请填写以下代码:
compile fileTree(dir: '../webserver/lib', include: '*.jar')
这里我们将把../webserver/lib中的所有JAR作为依赖项
只需在文件树上使用排除。语法与include相同
这应该行。我明白你的意思。基于组的排除对flatDir回购不起作用,因为flatDir没有组信息。
因此,最好将“test:0.1.0”jar包含在libs文件夹ProjectB中,而不是将其添加到flatDir repo中。
因此,通过使用fileTree,我们可以获得ProjectB的依赖项ProjectA(测试:0.1.0JAR)。
从文件树中,我们可以排除jar中的依赖项(a)。
请填写以下代码:
compile fileTree(dir: '../webserver/lib', include: '*.jar')
这里我们将把../webserver/lib中的所有JAR作为依赖项
只需在文件树上使用排除。语法与include相同
这应该行得通。语法应该行得通-dependencyInsight怎么说?运行dependencyInsight--configuration compile--dependency test'
:dependencyInsight:test:0.1.0 \--compile
哦,我的意思是在例如sprint boot starter web
上运行它。哦,对不起。结果是:org.springframework.boot:spring-boot-starter-web org.springframework.boot:spring-boot-starter-web1.4.0 \--compile
语法应该起作用-dependencyInsight说什么?运行dependencyInsight--configuration compile--dependencyinstest'
产生:dependencyInsight:test:0.1.0 \--compile
哦,我的意思是在sprint-bo上运行它ot starter web。哦,对不起。结果是:org.springframework.boot:spring boot starter web org.springframework.boot:spring-boot-starter-web1.4.0 \--编译
谢谢。我从fileTree
开始,转到flatDir
,因为它不工作,但我可能刚刚犯了一个错误。但我认为指出这一点很好如果jar
是一个FatJar,那么这也不起作用。谢谢。我从fileTree
开始,然后转到flatDir
,因为它不起作用,但我可能只是犯了一个错误。但是我想最好指出,如果jar
是一个FatJar,那么这也不起作用。是的,那也会起作用。创建一个private repo并上传它,然后在build.gradle的repositories部分添加url。你能告诉我,为什么fileTree不工作吗?哪里出错了?出现了什么错误?没有错误。exclude
子句没有任何作用。无论我如何尝试排除。这是几天前的事,说实话,我不能说是否这是因为我在包装jar时犯了一个错误,或者你不能从filetree
Ya中排除这个问题。创建一个私有repo并上传它,然后在build.gradle中的repositories部分添加url。你能告诉我,为什么filetree不工作吗?哪里出了问题?你有什么错误?没有错误。>exclude
子句没有任何作用。无论我如何尝试排除。这是几天前的事,所以说实话,我不能说这是因为我在包装罐子时出错,还是因为你不能从文件树中排除