如何创build一个空的多模块Maven项目?
现在,我通常会在网上find一个pom.xml
文件,并将其复制并粘贴到我的父项目中。 然后,我用来运行archetype:create
在父目录内创build子模块,但是archetype:create
已经被弃用。
关于如何创build新的Maven多模块项目的任何build议?
最简单的方法是使用pom-root
原型来创build顶层的pom,然后重复使用archetype:generate
来单独创build每个模块。 这会自动将模块添加到根目录(聚合器),并将根目录设置为每个模块的父目录(编辑:显然,一些原型可以有一个硬编码的父目录,但它适用于maven-archetype-quickstart
)。
这是细节:
-
创build顶级根目录:
mvn archetype:generate \ -DarchetypeGroupId=org.codehaus.mojo.archetypes \ -DarchetypeArtifactId=pom-root \ -DarchetypeVersion=RELEASE
-
cd
到你新创build的根目录。 -
对于每个模块:
mvn archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DarchetypeVersion=RELEASE
请注意,上面的-DarchetypeVersion=RELEASE
会自动使用最新版本的原型。 您可能要将-DgroupId=...
添加到这些命令中的每一个,以避免重复自己。
以下是关于如何使用Intellij Idea进行屏幕录像。 首先,启动一个新的项目(文件 – >新build项目),select“Maven模块”:
input名称,点击下一步,在以下步骤中不要更改其他任何内容,点击完成。
现在在您的pom.xml
键入<packaging>
并启用自动更新:
input模块:
将光标放在m1
,然后按Alt + Enter 。
模块m1
将自动添加到您的项目。 现在你可以做Alt + Enter for m2
,就是这样。
您也可以先为您的项目的现有模块添加pom.xml
:右键单击项目树中的“添加框架支持…”,select“Maven”。 这将创build一个pom.xml
。
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>
所以,基本上你必须自己创build文件夹结构和模块描述符(pom.xml文件)。 使用简单的shell脚本或batch file很容易做到这一点,如果你需要多次。
我不知道如果我正确理解你的问题,但创build一个多模块项目,我通常使用一个简单的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。 你想创build的项目可能已经有了一个原型,可以帮助你创build结构。 尽pipe你可以从IDE获得帮助来自己编写pom,但是如果有一个原型可用于要构build的项目types,那么通常使用它更容易。
如果您正在使用Eclipse IDE,则应该使用m2eclipse插件 。 这是创build多模块项目的最简单方法之一。 您可以通过在eclipse中创build一个“Maven Module-Project”来为每个Maven项目添加一个模块。 当你这样做,你有可能select一个父项目。 插件完成一切,意味着它将新模块复制到父模块并修改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 \
简单的4个步骤,如果你想避免xml复制粘贴。
-
创build一个284(默认)的原型项目。 打开创build的pom文件,将jar包更改为pom
-
从项目中删除src文件夹 – 这是现在的父项目没有src,因为包装是pom。 在上面的文件夹中创build另一个新项目(默认为284)。 将包装更改为war或ejb或ear。 这成为子模块。
-
在每个模块上执行mvn eclipse:eclipse。 现在该项目应该可以作为Eclipse项目导入了。
-
在导入项目时,Eclipse会抱怨下面的Projectconfiguration不是最新的pom.xml。 运行Maven->更新项目或使用快速修复。 要避免上述错误,请右键单击并select快速修复。 这将更新POMS。 另一种避免这种错误的方法是在Parent pom中声明子模块
参考下面的链接了解更多详情。 http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Example_1
考虑一个父项目书签和3个子模块rest,安全和模型,指Spring文档 。 它没有Spring文档中的依赖关系,只是从多模块的angular度来看基本的设置。
以非交互式模式/批处理模式创build父项目项目
mvn archetype:generate \ -DarchetypeGroupId=org.codehaus.mojo.archetypes \ -DarchetypeArtifactId=pom-root \ -DarchetypeVersion=RELEASE \ -DgroupId=bookmarks \ -DartifactId=bookmarks \ -Dversion=0.0.1-SNAPSHOT \ -DinteractiveMode=false
以非交互式模式/批处理模式创build子模块。
cd到你新创build的根目录。 参考@ 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中创build一个新的模块goto File-> new-> other-> maven-> maven module,这个在eclipse workspace package explorer中立即显示出来。
或者从cli,cd里面的父文件夹,在这里书签和运行下面,它会创build项目,然后你必须导入到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