Maven为java项目中的每个java包创建一个jar
假设我有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,但是里面的内容是相同的,这意味着排除子句不起作用。我试图只排除类(相对/绝对路径)和包。别问我为什么这么做是为了做作业,这没什么意义! 这是我尝试的方法,如果有其他更有效的方法,请随时与我分享
编辑:不能使用模块化结构,它必须是一个单独的项目
提前谢谢
# 1 楼答案
评论中已经给出了答案,但这里有一个例子
父pom:
和2个子模块POM,只有artifactId不同:
额外信息
我用命令创建了父对象:
然后用命令创建了两个模块
如果必须有一个jar项目(没有模块和父级),可以使用shade-plugin:
# 2 楼答案
我已经接受了上面的答案,因为这是正确的方法,但如果像我这样的疯子试图用错误的方法来做,以下是方法:
请注意使用类而不是java,因为它使用的是已编译的扩展名!至于其他文件,它们是类路径上的资源