Maven原型:将强制groupId生成为包结构

时间:2018-10-23 14:00:02

标签: maven package maven-archetype archetypes

我正在尝试创建一个原型来生成一个Maven项目,该项目具有一些将在文件中使用的属性以及文件名和目录结构。

我遇到的问题是如何控制包目录结构?无论到目前为止我尝试过什么,我指定的groupId(在archetype:generate中是必选参数)都将其自身强制为软件包目录结构。如果我尝试在archetype-resources目录设置中或在Java文件本身的程序包名称中使用其他内容,那么我将得到在那里指定的内容,以及groupId

有效地,我希望我的项目结构与groupId不同,但是生成的原型似乎迫使groupId进入包结构。

有办法阻止这种情况吗?

如果我使用以下命令:

archetype:generate -DarchetypeGroupId=archetype.test -DarchetypeArtifactId=archetype-test -DarchetypeVersion=1.0-SNAPSHOT -DgroupId=com.example.test.project-DartifactId=my.test.project.artifact -Dversion=1.0.0-SNAPSHOT

使用以下fileset

<fileSet filtered="true" packaged="true">
        <directory>src/main/java</directory>
        <includes>
            <include>**/MyClass.java</include>
        </includes>
    </fileSet>

最终我的Java文件位于:

src/main/java/com/example/test/project/MyClass.java.

我仍然希望使用相同的groupId,但是我希望我的课程位于单独的目录中,例如:

src/main/java/com/different/project/MyClass.java

1 个答案:

答案 0 :(得分:1)

请参见Create a Project from an Archetype – Batch mode

  

可以调用Archetype插件以批处理方式生成项目(摆脱提示)。这是通过为原型插件提供所有需要的值作为系统属性来实现的。

     
      
  • ...

  •   
  • package指定用于生成项目的源的程序包

  •   
  • ...

  •   

长话短说,将以下内容添加到您的命令行中:

-Dpackage=com.different.project