2

有一个maven项目(jar),但现在需要分拆成两个工件

我想要两个像下面这样的 Maven 工件

<groupId>xxx</groupId>
<artifactId>xxx-client</groupId>

<groupId>xxx</groupId>
<artifactId>xxx-impl</groupId>

但是所有代码都在一个项目中。

我的问题是,如何在不过多更改项目的情况下打包两个所需的工件。

然后 ,

mvn 包部署

将自动将这两个工件部署到存储库中实际上我不想将这些项目拆分为两个 Maven 项目。

4

4 回答 4

3

我不确定是否有可能<artifactId>在一个 POM 中有两个标签,因为它是独一无二的。你可以做的是,你可以有两个 pom 文件,比如说pom.xml,和pom_impl.xml,现在

  • 部署客户端,mvn package deploy
  • 部署 impl 做,mvn -f pom_impl.xml package deploy

不过没试过。


澄清:这个问题似乎模棱两可,好像你有一个项目,但你想生成相同代码库的两个工件(客户端和 impl)。再读一遍,我觉得你有两个项目(两个不同的代码库),但你只是想统一它,使它表现为同一个项目的两个模块。我的回答假设第一种情况。

于 2012-01-31T08:25:29.767 回答
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 时,它也会部署它的模块。

如果您想了解更多关于super pommodules的信息,这里有参考资料。

于 2012-01-31T08:32:10.827 回答
0

这在 Maven 世界中被称为“多模块项目”。您可以找到有关如何执行此操作的信息,例如此处。实际上,您需要两个单独的 POM 和一个额外的 POM 来组合两者。

于 2012-01-31T08:49:08.147 回答
0

指定 pom

制作两个 pom,然后在命令行中指定 pom,这是最简单的方法。

于 2012-02-01T01:17:29.227 回答