【发布时间】:2018-06-21 19:42:34
【问题描述】:
我有以下架构
现在,如果我正在创建父子关系并首先建立子节点和父节点,它将正常工作
<packaging>jar</packaging>
要求:
我需要具有以下功能的包装:
在父项目“A”上运行的命令 - mvn clean install package etc 首先创建罐子“B”、“C”、“D” 然后创建罐子“A” 然后在 Jar A 中添加 "B","C","D" jar
当我添加模块时
<modules>
<module>../B</module>
<module>../C</module>
<module>../D</module>
</modules>
然后maven强制添加
<packaging>pom</packaging>
插入
<packaging>jar</packaging>
问题:
当我添加包装 pom 时,jar "A" 不会创建
所以我试图创建一个超级 pom
POM 超级:
<packaging>pom</packaging>
<modules>
<module>../A</module>
</modules>
POM A:
<parent>
<groupId>com.khan.vaquar</groupId>
<artifactId>Super</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/>
</parent>
<packaging>pom</packaging>
<modules>
<module>../B</module>
<module>../C</module>
<module>../D</module>
</modules>
<dependencies>
<!-- B -->
<dependency>
<groupId>com.khan.vaquar</groupId>
<artifactId>B</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!-- C -->
<dependency>
<groupId>com.khan.vaquar</groupId>
<artifactId>C</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!-- D-->
<dependency>
<groupId>com.khan.vaquar</groupId>
<artifactId>D</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!-- Swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
POM B:
<packaging>jar</packaging>
<parent>
<groupId>com.khan.vaquar</groupId>
<artifactId>A</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/>
</parent>
POM C:
<packaging>jar</packaging>
<parent>
<groupId>com.khan.vaquar</groupId>
<artifactId>A</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
POM D:
<packaging>jar</packaging>
<parent>
<groupId>com.khan.vaquar</groupId>
<artifactId>A</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/>
</parent>
问题:如果我们正在添加模块,maven 不允许添加 jar,那么如何将子 jar 添加到父 jar 并创建构建。
【问题讨论】:
-
确切的错误是什么?我认为在这种情况下,您需要指定父级的 relativePath 才能使反应器构建工作。
-
Jar A (A contains cihild jar B,C,D) not created using
pom and maven not allowedjar 如果我们添加任何模块, -
寻找变通解决方案如何做到这一点
-
为什么不使用单独的反应器来构建依赖项(B、C、D)?或者,我认为您可以将超级 pom 用作反应器,并在将 A 更改为包装罐后添加所有 4 个工件(A、B、C、D)
-
B,C,D 独立 jars 但 A jar 包含自己的代码和 A 内部的 B,C,D。独立反应器将独立创建 4 个 jars .A,B,C,D 而不是 A(B ,C,D,)