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

Java 如何创建一个空的多模块Maven项目?,java,maven,Java,Maven,现在,我通常在web上找到一个pom.xml文件,该文件包含一个pom打包并复制粘贴以创建我的父项目。然后,我曾经在父目录中运行archetype:create来创建子模块,但是archetype:create从那时起就被弃用了 关于如何创建新的Maven多模块项目有什么建议吗?我不确定是否正确理解了您的问题,但对于创建多模块项目,我通常使用简单的pom(在根级别): 4.0.0 com.vijaykiran 我的项目父项 1 聚甲醛 m1 平方米 这可能是您可以使用的最简单的多模块父pom

现在,我通常在web上找到一个
pom.xml
文件,该文件包含一个
pom
打包并复制粘贴以创建我的父项目。然后,我曾经在父目录中运行
archetype:create
来创建子模块,但是
archetype:create
从那时起就被弃用了


关于如何创建新的Maven多模块项目有什么建议吗?

我不确定是否正确理解了您的问题,但对于创建多模块项目,我通常使用简单的pom(在根级别):


4.0.0
com.vijaykiran
我的项目父项
1
聚甲醛
m1
平方米

这可能是您可以使用的最简单的多模块父pom。您要创建的项目可能已经有一个原型,可以帮助您创建结构。虽然您可以从IDE获得帮助来自己编写pom,但是如果您想要构建的项目类型有可用的原型,通常更容易使用。

mvn原型:create
已被弃用,取而代之的是
mvn原型:generate
,因此名称已更改。官方存储库中的多模块项目有一个原型,因此运行此命令会产生(最低限度的)结果:

[axe@gromp测试]$mvn原型:生成
..
:remote->pom root(用于创建多模块项目的根项目原型)
..
选择一个数字:109:
.. 
[axe@gromp测试]$tree
.
└── 模块测试
└── pom.xml
1个目录,1个文件
[axe@gromptest]$cat modules.test/pom.xml
4.0.0
com.example
模块测试
1.0-快照
聚甲醛
模块测试

因此,基本上您必须自己创建文件夹结构和模块描述符(pom.xml文件)。如果您多次需要,使用简单的shell脚本或批处理文件将很容易做到这一点。

如果您正在使用eclipse IDE,则应使用。这是创建多模块项目的最简单方法之一。通过在eclipse中创建一个“maven模块项目”,可以向每个maven项目添加一个模块。执行此操作时,您可以选择父项目。插件完成了所有操作,这意味着它将新模块复制到父模块,并修改pom.xml文件。

如果要避免xml复制粘贴,请执行简单的4个步骤

  • 创建一个284(默认)原型项目。打开创建的pom文件,将包装从jar更改为pom

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

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

  • 在导入项目时,Eclipse会抱怨如下 pom.xml中的项目配置不是最新的。运行Maven->Update Project或使用快速修复程序。 要避免上述错误,请右键单击并选择“快速修复”。这将更新POMS。避免此错误的另一种方法是在父pom中声明子模块

  • 有关更多详细信息,请参考以下链接。

    我发现最简单的方法是使用
    pom根
    原型创建顶级pom,然后重复使用
    原型:generate
    分别创建每个模块。这将自动将模块添加到根pom(聚合器)中,并将根pom设置为每个模块的父pom(编辑:显然,某些原型可以有硬编码的父pom,但它适用于
    maven原型快速启动

    以下是分类:

  • 创建顶级根目录:

    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
    中键入
    并启用自动更新:

    输入模块:

    将光标置于
    m1
    并按Alt+Enter键

    模块
    m1
    将自动添加到您的项目中。现在您可以对
    m2
    执行Alt+Enter操作,就这样

    您也可以从为项目的现有模块添加
    pom.xml
    开始:在项目树中右键单击它,“添加框架支持…”,选择“Maven”。这将创建一个
    pom.xml

    与我刚才添加的groupId、artifactId和version选项以及禁用交互模式相同的答案

    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  \
    

    考虑一个父项目bookmarks和3个子模块rest、security和model,参见。 它没有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是包结构。这是书签。 如果未指定,则它将将ARTARFATID视为默认包

    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文件->新建->其他->maven->maven模块中创建新模块,这将立即显示在eclipse工作区包资源管理器中

    或者从cli,父文件夹中的cd,在此处添加书签并运行以下操作,它将 创建项目,然后您必须将其作为maven项目导入eclipse,或者可以从父项目(此处为书签)开始工作
    mvn archetype:generate \
    -DarchetypeGroupId=org.codehaus.mojo.archetypes \
    -DarchetypeArtifactId=pom-root \
    -DarchetypeVersion=RELEASE \
    -DgroupId=bookmarks \
    -DartifactId=bookmarks \
    -Dversion=0.0.1-SNAPSHOT \
    -DinteractiveMode=false
    
    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 
    
    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