如何创build一个空的多模块Maven项目?

现在,我通常会在网上find一个pom.xml文件,并将其复制并粘贴到我的父项目中。 然后,我用来运行archetype:create在父目录内创build子模块,但是archetype:create已经被弃用。

关于如何创build新的Maven多模块项目的任何build议?

最简单的方法是使用pom-root原型来创build顶层的pom,然后重复使用archetype:generate来单独创build每个模块。 这会自动将模块添加到根目录(聚合器),并将根目录设置为每个模块的父目录(编辑:显然,一些原型可以有一个硬编码的父目录,但它适用于maven-archetype-quickstart )。

这是细节:

  1. 创build顶级根目录:

     mvn archetype:generate \ -DarchetypeGroupId=org.codehaus.mojo.archetypes \ -DarchetypeArtifactId=pom-root \ -DarchetypeVersion=RELEASE 
  2. cd到你新创build的根目录。

  3. 对于每个模块:

     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复制粘贴。

  1. 创build一个284(默认)的原型项目。 打开创build的pom文件,将jar包更改为pom

  2. 从项目中删除src文件夹 – 这是现在的父项目没有src,因为包装是pom。 在上面的文件夹中创build另一个新项目(默认为284)。 将包装更改为war或ejb或ear。 这成为子模块。

  3. 在每个模块上执行mvn eclipse:eclipse。 现在该项目应该可以作为Eclipse项目导入了。

  4. 在导入项目时,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