有一个maven项目(jar),但现在它需要被分成两个工件
我希望有两个maven神器,如下面的
<groupId>xxx</groupId>
<artifactId>xxx-client</groupId>
<groupId>xxx</groupId>
<artifactId>xxx-impl</groupId>
但所有代码都在一个项目中。
我的问题是,如何在不改变项目的情况下打包拖曳所需的工件。
然后,
mvn包部署
会自动将这两个工件部署到存储库中 实际上我不想将这些项目分成两个maven项目。
答案 0 :(得分:3)
我不确定在一个POM中是否有可能有两个<artifactId>
标签,因为它是唯一的。你可以做的是,你可以有两个pom文件,比如pom.xml
和pom_impl.xml
,现在
mvn package deploy
mvn -f pom_impl.xml package deploy
从未尝试过。
澄清:这个问题看起来很模糊,好像你有一个项目,但你想生成两个相同代码库的工件(client和impl)。再次阅读它,我觉得你有两个项目(两个不同的代码库),但你只是想统一它,使它表现为同一个项目的两个模块。我的回答是第一个案例。
答案 1 :(得分:1)
如果我理解问题是正确的,那么你需要为你的两个项目(xxx-client和xxx-impl)提供一个超级pom(xxx / pom.xml)和两个不同的pom。超级pom的结构将是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<packaging>pom</packaging>
<modules>
<module>xxx-client</module>
<module>xxx-impl</module>
</modules>
</project>
然后当你部署主pom时,它也将部署它的模块。
答案 2 :(得分:0)
这在Maven世界中被称为“多模块项目”。您可以找到有关如何执行此操作的信息,例如here。实际上,您需要两个单独的POM和另外一个将两者结合起来。
答案 3 :(得分:0)
制作两个pom,然后在命令行中指定pom,这是最简单的方法。