【发布时间】:2020-05-16 03:26:06
【问题描述】:
假设我有 3 个包,需要为每个包创建一个 jar,每个包只包含当前包中的内容。我的尝试是:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>first-jar</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>first-jar</classifier>
<excludes>
<exclude>/maven.task.3/src/main/java/third/ThirdMain.java
</exclude>
<exclude>/maven.task.3/src/main/java/second/SecondMain.java
</exclude>
</excludes>
</configuration>
</execution>
<execution>
<id>second-jar</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>second-jar</classifier>
<excludes>
<exclude>/maven.task.3/src/main/java/first/FirstMain.java
</exclude>
<exclude>/maven.task.3/src/main/java/third/ThirdMain.java
</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
这确实会创建不同的 jar,但是里面的内容是一样的,这意味着 exclude 子句不起作用。我尝试只排除类(相对/绝对路径)和包。不要问我为什么这样做是为了家庭作业,它没有多大意义! 这是我尝试做的方式,如果有其他更有效的方式,请随时与我分享!
编辑:不得使用模块化结构,它必须是一个单独的项目。
提前致谢
【问题讨论】:
-
制作单独的模块,就是这样......(多模块构建)它有几个模块,其中包含每个包......从单个源目录生成不同的 jar 是一个坏主意......
-
提示:maven-jar 插件不适用于 .java 文件,但适用于在 target/classes 中找到的已编译 .class 文件
-
@khmarbaise 我认为我的任务是严格针对我不使用模块的事实,我想到了,但是是的......遗憾的是,在这种情况下它必须是更大的邪恶:(跨度>
-
@GyroGearless 你在类部分是正确的,但我怎么能排除整个包,因为这样我只排除了类但文件夹在 jar 中保持为空?
-
模块化结构是一种模块化结构,应该在您的构建结构中表示。如果您试图强制进入一个会失败并导致许多问题的模块......并且您正在与 Maven 战斗,这是一场您将失去的战斗。
标签: java maven jar maven-plugin