我有一个项目(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
}
非常感谢任何帮助。
答案 0 :(得分:0)
答案 1 :(得分:0)
我明白了你的意思。基于该组的排除不能使用flatDir repo,因为平面目录没有组信息。 所以最好包括测试:0.1.0'在libs文件夹ProjectB中使用jar而不是在flatDir repo中添加它。 因此,通过使用fileTree,我们可以获得ProjectB的依赖项ProjectA(test:0.1.0 jar)。 从文件树中我们可以排除在jar(A)中排除依赖。 请仔细阅读以下代码:
select *
from (
select distinct on (a.batch) c.id,a.partid,b.partname,c.stock_stock,
from components a
join parts b using(partid)
left join (
select *
from componentsreport($1)
) c using (partid)
JOIN start_work d on d.batchid=a.batchid
where b.issub
group by c.id,a.partid,b.partname,c.stock
order by a.batch
) tmp
where tmp.id = 3436
这里我们将../webserver/lib中的所有jar包括为依赖项。
只需在fileTree上使用排除。语法与include相同。
这应该有用。