我正在计划一个多模块的 Maven 项目。
Parent POM 定义了两个模块,A 和 B
- 模块 A 需要可从命令行执行以显示 AWT JDialog。
- 模块 B 将是一个普通的 jar,其 12 多个依赖项由客户端下载(即未打包)
- 模块 B 需要依赖于模块 A。
- 想让 jar 尽可能小,以便在 Maven Central 上分发。
我的问题:
1. 多模块 maven 项目是实现这些目标的正确方法吗?
2. 两个模块都需要分别发布到maven central吗?
我正在计划一个多模块的 Maven 项目。
Parent POM 定义了两个模块,A 和 B
我的问题:
1. 多模块 maven 项目是实现这些目标的正确方法吗?
2. 两个模块都需要分别发布到maven central吗?
这看起来像是多模块构建的典型场景。
.
├── mod-a
│ └── pom.xml
├── mod-b
│ └── pom.xml
└── pom.xml (parent)
父级仅包含一个模块列表(两个),如下所示:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.soebes.smpp</groupId>
<artifactId>smpp</artifactId>
<version>0.7.1</version>
</parent>
<groupId>com.soebes.training.first</groupId>
<artifactId>project-parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Project : Parent</name>
<scm>
Define the SCM information here...
</scm>
<modules>
<module>mod-a</module>
<module>mod-b</module>
</modules>
</project>
每个孩子都应该看起来像这样:
<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>
<parent>
<groupId>com.soebes.training.first</groupId>
<artifactId>project-parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
<name>Project : Mod-A</name>
<artifactId>mod-a</artifactId>
</project>
你的 module-b 应该是这样的:
<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>
<parent>
<groupId>com.soebes.training.first</groupId>
<artifactId>project-parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
<name>Project : Mod-B</name>
<artifactId>mod-b</artifactId>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mod-a</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
现在您可以从父模块构建,所有这些都应该部署到中央,无需单独执行此操作,您可以从父模块一次性完成...