现在,我通常会pom.xml
在网络上找到一个带有pom
包装的文件,然后将其复制并粘贴以创建我的父项目。然后,我曾经archetype:create
在父目录中运行来创建子模块,但是archetype:create
从那以后就不推荐使用了。
关于如何创建新的Maven多模块项目的任何建议?
现在,我通常会pom.xml
在网络上找到一个带有pom
包装的文件,然后将其复制并粘贴以创建我的父项目。然后,我曾经archetype:create
在父目录中运行来创建子模块,但是archetype:create
从那以后就不推荐使用了。
关于如何创建新的Maven多模块项目的任何建议?
Answers:
我发现最简单的方法是使用pom-root
原型创建顶级pom,然后重复使用archetype:generate
以单独创建每个模块。这将自动将模块添加到root pom(聚合器),并将root pom设置为每个模块的父pom(编辑:显然,某些原型可以具有硬编码的父代,但它适用于maven-archetype-quickstart
)。
细目如下:
创建顶级根目录:
mvn archetype:generate \
-DarchetypeGroupId=org.codehaus.mojo.archetypes \
-DarchetypeArtifactId=pom-root \
-DarchetypeVersion=RELEASE
cd
到新创建的根目录中。
对于每个模块:
mvn archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=RELEASE
请注意,-DarchetypeVersion=RELEASE
以上将自动使用最新版本的原型。您可能希望添加-DgroupId=...
到每个命令中以避免重复自己。
这是有关如何使用Intellij Idea做到这一点的截屏视频。首先,启动一个新项目(文件->新建项目),选择“ Maven模块”:
输入名称,单击下一步,在以下步骤中不要更改任何其他内容,单击完成。
现在以您的pom.xml
类型输入<packaging>
并启用自动更新:
输入模块:
将光标放在m1
,然后按Alt+Enter。
模块m1
将自动添加到您的项目中。现在你可以做Alt+Enter的m2
,就是这样。
您还可以从pom.xml
为项目的现有模块添加开始:在项目树中的“添加框架支持...”上单击鼠标右键,选择“ Maven”。这将创建一个pom.xml
。
<module>m1</module>
在<modules>
标签内。我是pom文件的新手,最终花了大量时间在为什么alt + enter
不显示任何提及的选项上。
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脚本或批处理文件,则可以轻松完成此操作。
我不确定我是否正确理解了您的问题,但是对于创建多模块项目,我通常使用简单的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,但是如果要构建的项目类型有可用的原型,通常使用它会更容易。
如果您使用的是eclipse IDE,则应使用m2eclipse插件。这是创建多模块项目的最简单方法之一。您可以通过在eclipse中创建“ Maven Module-Project”,将模块添加到每个Maven项目。这样做时,您可以选择一个父项目。该插件执行所有操作,这意味着它将新模块复制到父模块并修改pom.xml文件。
考虑一个父项目书签,其余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进入新创建的根目录。引用@ Chris.H的回答
-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
要在eclipse中创建一个新模块,请转到File-> new-> other-> maven-> maven模块,这将立即显示在Eclipse工作区包资源管理器中。
或者从父文件夹内的cli,cd中添加书签,然后运行以下命令,它将创建项目,然后您必须将其作为maven项目导入eclipse,或者可以从父级(此处添加书签项目)工作
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
如果要避免xml复制粘贴,请执行简单的4个步骤。
创建一个284(默认)原型项目。打开创建的pom文件,将包装从jar更改为pom
从项目中删除src文件夹-由于打包是pom,因此这是没有src的父项目。在上面的文件夹中创建另一个新项目(默认为284)。将包装更改为war或ejb或ear。这成为子模块。
在每个模块上执行mvn eclipse:eclipse。现在,该项目应该已准备就绪,可以作为Eclipse项目导入。
在导入项目时,Eclipse会抱怨以下项目配置不是pom.xml的最新内容。运行Maven->更新项目或使用快速修复。为避免上述错误,请右键单击并选择快速修复。这将更新POMS。避免此错误的另一种方法是在父pom中声明子模块
请参考以下链接以获取更多详细信息。 http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Example_1