我在项目2的lib
下有以下项目结构。
项目2(lib
下)
- Maven dependencies (JARs)
- project 1 JAR (it has JARs in lib)
- Maven dependencies of project 1 (JARs)
我想在准备项目2时排除项目1下的所有JAR。
我目前在我的POM(项目1和项目2)中使用以下内容
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
构建项目1时,我希望它构建为带有lib的可执行JAR。
但是在构建项目2时,我希望项目1只是一个已编译的JAR(意思是只有类文件而没有lib(JAR))。
项目1作为项目2中的正常依赖项包含在内。任何人都可以帮助我吗?
答案 0 :(得分:0)
如果我理解正确,项目1会构建一个jar,它包含一个带有依赖项的lib目录。
你可以在项目1中有2个程序集执行,一个是基本jar,另一个是依赖和执行清单,通常你使用不同的&#34;分类器&#34;对于同一项目的多个工件。
否则你需要&#34;重新包装&#34;用于删除你不想使用像Shade这样的插件的库。
我认为第一个选项要好得多,默认情况下,如果将它发布到存储库,两个jar都会被发布,以便其他人可以获得其中一个。
答案 1 :(得分:0)
如果要排除给定依赖项的所有依赖项,请使用排除项
https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html
并且像
一样<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
当然,您必须确保在运行时不需要缺少传递依赖项。