现在我经常pom.xml在网上找到一个pom包装并复制并粘贴它以创建我的父项目的文件.然后我曾经archetype:create在父目录中运行来创建子模块,但archetype:create从那时起就被弃用了.
有关如何创建新的Maven多模块项目的任何建议?
Chr*_* H. 120
我发现这样做的最简单方法是使用pom-root原型创建顶级pom,然后重复使用archetype:generate以单独创建每个模块.这将自动将模块添加到根pom(聚合器)并将根pom设置为每个模块的父pom(编辑:显然一些原型可以具有硬编码的父级,但它适用于maven-archetype-quickstart).
这是细分:
创建顶级根:
mvn archetype:generate \
-DarchetypeGroupId=org.codehaus.mojo.archetypes \
-DarchetypeArtifactId=pom-root \
-DarchetypeVersion=RELEASE
Run Code Online (Sandbox Code Playgroud)cd 进入你新创建的根目录.
对于每个模块:
mvn archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=RELEASE
Run Code Online (Sandbox Code Playgroud)请注意,-DarchetypeVersion=RELEASE上面将自动使用最新版本的原型.您可能希望添加-DgroupId=...到每个命令中以避免重复自己.
And*_*hev 46
这是一个关于如何使用Intellij Idea进行截屏的截屏视频.首先,启动一个新项目(File - > New Project),选择'Maven Module':

键入名称,单击"下一步",不要在以下步骤中更改任何其他内容,单击"完成".
现在在您的pom.xml类型中<packaging>并启用自动更新:

输入模块:

将光标放在m1,然后按Alt+Enter.

模块m1将自动添加到您的项目中.现在你可以做Alt+Enter的m2,就是这样.

您还可以首先添加pom.xml项目的现有模块:在项目树中右键单击"添加框架支持...",选择"Maven".这将创建一个pom.xml.
Axe*_*auf 19
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>
Run Code Online (Sandbox Code Playgroud)
所以,基本上你必须自己创建文件夹结构和模块描述符(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>
Run Code Online (Sandbox Code Playgroud)
这可能是您可以使用的最简单的多模块父pom.您要创建的项目可能已经有一个原型,可以帮助您创建结构.虽然您可以从IDE获得帮助来自己编写pom,但如果有一个原型可用于您要构建的项目类型,则通常更容易使用它.
如果您正在使用eclipse IDE,则应使用m2eclipse插件.这是创建多模块项目的最简单方法之一.您可以通过在eclipse中创建"Maven Module-Project"来为每个maven项目添加一个模块.执行此操作时,您可以选择父项目.插件可以完成所有操作,这意味着它将新模块复制到父模块并修改pom.xml文件.
考虑一个父项目书签和3个子模块rest、security和model,参考Spring文档。它没有 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
Run Code Online (Sandbox Code Playgroud)
以非交互模式/批处理模式创建子模块。
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
Run Code Online (Sandbox Code Playgroud)
要在 eclipse 中创建新模块,请转到文件->新建->其他->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
Run Code Online (Sandbox Code Playgroud)
与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 \
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70780 次 |
| 最近记录: |