Java 无法排除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 =

我有一个项目(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 = '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
子句没有任何作用。无论我如何尝试排除。这是几天前的事,所以说实话,我不能说这是因为我在包装罐子时出错,还是因为你不能从
文件树中排除