我有一个需要通过Jenkins构建的多模块maven应用程序。项目结构如下:
a.xml
<artifactId>parent-1</artifactId>
<modules>
<module>lookup-1</module>
<module>lookup-2</module>
</modules>
lookup-1.xml
<artifactId>lookup-1</artifactId>
<parent>
<groupId>com.lookup</groupId>
<artifactId>parent-1</artifactId>
<version>1.0.1-SNAPSHOT</version>
</parent>
<name>lookup-1</name>
lookup-2.xml
<artifactId>lookup-2</artifactId>
<parent>
<groupId>com.lookup</groupId>
<artifactId>parent-1</artifactId>
<version>1.0.1-SNAPSHOT</version>
</parent>
<name>lookup-2</name>现在,mvn全新安装-f a.xml运行良好。为此,我创建了一个Jenkins作业。现在,和a.xml一样,我还有另一个和b.xml的项目。除了Ids不同外,b.xml的代码与a.xml相同。因此,我为b.xml创建了另一个jenkins作业。这两项工作都运行得很好。但是,现在我想从单个Jenkins作业构建这两个项目,基于我们在Git中提交的项目。对于这个,我想要有一个新的项目(pom.xml),并且我想把a和b都放在模块标签下。如下所示:
pom.xml
<name>combined_project</name>
<artifactId>combined_project</artifactId>
<modules>
<module>a</module>
<module>b</module>
</modules>
a.xml
<artifactId>parent-1</artifactId>
<name>a</name>
<parent>
<artifactId>combined_project</artifactId>
</parent>
<modules>
<module>lookup-1</module>
<module>lookup-2</module>
</modules>但是,这对我不起作用。在maven中我得到了以下异常:
Child module D:\....\a of D:\....\pom.xml does not existMaven找不到子模块。我的项目结构如下:
project
|_ lookup-1
|_ lookup-1.xml
|_ lookup-2
|_ lookup-2.xml
|_ a.xml
|_ b.xml
|_ pom.xml有什么提示吗?
发布于 2016-04-18 19:36:29
a.xml有两个子模块lookup-1和lookup-2。默认情况下,maven会在嵌套的map中查找子模块。因此,您需要具有以下目录结构:
<parent>
|
+- a/pom.xml
| |
| +- lookup-1/pom.xml
| |
| +- lookup-2/pom.xml
|
+- b/pom.xml
|
+- pom.xml另一种方法是将父对象更改为
<name>combined_project</name>
<artifactId>combined_project</artifactId>
<modules>
<module>a</module>
<module>b</module>
<module>lookup-1</module>
<module>lookup-2</module>
</modules>发布于 2016-04-18 19:56:46
pom.xml遵循项目结构,每个Maven都包含一个Maven文件。正如您在命令行中明确声明的pom文件一样,该文件将被选为该项目的pom.xml。但是,对于列出的每个子模块,maven将为每个子模块搜索名为"pom.xml"的确切文件。
从提供的文件夹结构可以推断,当在命令行中显式指定时,a.xml可以充当pom文件,但它不能充当模块,因为它没有带有pom.xml的专用文件夹。
maven项目通常具有以下结构:
如果您尝试仅构建已更新的模块,则最近未签入的模块将不会是新创建的归档的一部分。但是如果你仍然出于某种“特殊”原因想要这么做的话。以下方法可能就是您要查找的方法:
在一个项目中有两个子模块,也有两个.xml文件(pom文件在命令行中指定)(我不推荐这样做--因为它很混乱,而且不符合约定)。在一个xml文件中,假设"a.xml“”模块-1“将被指定为模块,而在"b.xml”中,“模块-2”将被指定为模块。
使用当前修改的模块调用该pom文件上的构建。例如,如果模块1被修改,则在命令行中指定a.xml作为pom.xml。
请注意,我没有尝试过,但如果可能的话,这是我能想到的方法之一,通过它我们可以实现你正在寻找的东西。
发布于 2019-05-21 17:29:03
有两种可能性:

https://stackoverflow.com/questions/36691715
复制相似问题