现在,我通常会在网上找到一个 pom.xml文件,它有一个 pom包,然后复制粘贴它来创建我的父项目。然后,我曾经在父目录中运行 archetype:create来创建子模块,但是从那时起,archetype:create就不再被推荐了。
pom.xml
pom
archetype:create
有关于如何创建新的 Maven 多模块项目的建议吗?
我不确定我是否正确理解了你的问题,但是对于创建一个多模块项目,我通常使用一个简单的 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>com.vijaykiran</groupId> <artifactId>myproject-parent</artifactId> <version>1.0</version> <packaging>pom</packaging> <modules> <module>m1</module> <module>m2</module> </modules> </project>
这可能是您可以使用的最简单的多模块父 pom。您要创建的项目可能已经具有一个原型,该原型可能有助于您创建结构。虽然您可以从 IDE 获得帮助来自己编写 pom,但是如果您想要构建的项目类型有一个可用的原型,那么通常使用它会更容易。
mvn archetype:create已被弃用,取而代之的是 mvn archetype:generate,因此只是名称改变了。在官方存储库中有一个用于多模块项目的原型,因此运行这个命令会产生(最低限度的)结果:
mvn archetype:create
mvn archetype:generate
[axe@gromp test]$ mvn archetype:generate .. <num>: remote -> pom-root (Root project archetype for creating multi module projects) .. Choose a number: 109: <num> .. [axe@gromp test]$ tree . └── modules.test └── pom.xml 1 directory, 1 file [axe@gromp test]$ cat modules.test/pom.xml <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>com.example</groupId> <artifactId>modules.test</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <name>modules.test</name> </project>
因此,基本上您必须自己创建文件夹结构和模块描述符(pom.xml 文件)。使用简单的 shell 脚本或批处理文件很容易做到这一点,如果您需要它不止一次。
如果使用 eclipseIDE,则应使用 M2eclipse 插件。这是创建多模块项目最简单的方法之一。您可以通过在 eclipse 中创建一个“ Maven Module-Project”来为每个 Maven 项目添加一个模块。当这样做时,您有可能选择一个父项目。插件完成了所有工作,这意味着它将新模块复制到父模块并修改 pom.xml 文件。
如果您想避免 xml 复制粘贴,可以使用简单的4个步骤。
创建一个284(默认)原型项目
从项目中删除 src 文件夹-这现在是没有 src 的 Parent 项目,因为打包是 pom。 在上面的文件夹中创建另一个新项目(默认值为284)。将包装改为 war、 ejb 或 ear。这成为子模块。
在每个模块上执行 mvneclipse: Eclipse。
在导入项目时,Eclipse 会抱怨以下情况 项目配置与 pom.xml 不同,运行 Maven-> Update Project 或使用 Quick Fix。 若要避免上述错误,请右击并选择“快速修复”。这将更新 POMS。避免此错误的另一种方法是在 Parent pom
详情请参阅以下连结。 Http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#example_1
我发现最简单的方法是使用 pom-root原型来创建顶级 pom,然后重复使用 archetype:generate来单独创建每个模块。这将自动将模块添加到根 pom (聚合器) ,并将根 pom 设置为每个模块的父 pom (编辑: 显然一些原型可以有一个硬编码的父 pom,但它适用于 maven-archetype-quickstart)。
pom-root
archetype:generate
maven-archetype-quickstart
以下是详细情况:
创建顶级根目录:
mvn archetype:generate \ -DarchetypeGroupId=org.codehaus.mojo.archetypes \ -DarchetypeArtifactId=pom-root \ -DarchetypeVersion=RELEASE
cd into your newly created root dir.
cd
For each module:
mvn archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DarchetypeVersion=RELEASE
Note that -DarchetypeVersion=RELEASE above will automatically use the latest version of the archetype. You may want to add -DgroupId=... to each of those commands to avoid repeating yourself.
-DarchetypeVersion=RELEASE
-DgroupId=...
这里是一个关于如何使用 Intellij Ideas 做到这一点的视频。首先,启动一个新项目(文件-> 新项目) ,选择“ Maven Module”:
键入一个名称,单击下一步,不要更改以下步骤中的任何内容,单击 Finish。
现在在 pom.xml中键入 <packaging>并启用自动更新:
<packaging>
输入模组:
将光标置于 m1并按 Alt+Enter。
m1
模块 m1将自动添加到您的项目。现在您可以做 Alt+Enter的 m2,就是这样。
m2
您也可以从为项目的现有模块添加 pom.xml开始: 在项目树“ Add Framework Support...”中右键单击它,选择“ Maven”。这将创建一个 pom.xml。
答案与 Chris H.相同,我只是添加了 groupId、 artifactId 和版本选项,并禁用了交互模式。
mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes \ -DarchetypeArtifactId=pom-root \ -DarchetypeVersion=RELEASE \ -DinteractiveMode=false \ -DgroupId=com.mycompany.app \ -DartifactId=my-app \ -Dversion=1.0.0-SNAPSHOT \
考虑一个父项目书签和3个子模块休息,安全和模型,参考 Spring Docs。 它没有 Spring 文档中的依赖关系,只是从多模块的角度进行了基本的设置。
以非交互模式/批处理模式创建父 maven 项目
mvn archetype:generate \ -DarchetypeGroupId=org.codehaus.mojo.archetypes \ -DarchetypeArtifactId=pom-root \ -DarchetypeVersion=RELEASE \ -DgroupId=bookmarks \ -DartifactId=bookmarks \ -Dversion=0.0.1-SNAPSHOT \ -DinteractiveMode=false
在非交互模式/批处理模式下创建子模块。
Cd 到新创建的根目录中
- Dpackage 是包的结构,这里是书签。 如果没有指定,那么它将把 artifactId 视为默认包
mvn archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DarchetypeVersion=RELEASE \ -DgroupId=model \ -DartifactId=model \ -Dversion=0.0.1-SNAPSHOT \ -Dpackage=bookmarks \ -DinteractiveMode=false
要在 eclipsegoto File-> new-> other-> maven-> maven 模块中创建一个新模块,这将立即显示在 eclipseworkspace 包资源管理器中。
或者从 cli、 cd 里面的父文件夹中,在这里添加书签并运行以下命令,就可以了 创建项目,然后您必须导入到 Eclipse 作为一个 maven 项目,或者可以从父项目工作,这里是书签项目
mvn archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DarchetypeVersion=RELEASE \ -DgroupId=security \ -DartifactId=security \ -Dversion=0.0.1-SNAPSHOT \ -Dpackage=bookmarks \ -DinteractiveMode=false