Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Maven中有一个空的父项目是最佳实践吗?_Maven_Pom.xml_Parent Pom - Fatal编程技术网

在Maven中有一个空的父项目是最佳实践吗?

在Maven中有一个空的父项目是最佳实践吗?,maven,pom.xml,parent-pom,Maven,Pom.xml,Parent Pom,我对Maven中的多模块项目非常陌生,我刚刚了解到,在创建父项目时,基本上只需要将打包更改为“pom”->pom。如果您在父项目上运行mvn包,它将不会生成jar文件(如果您在其中包含源代码)。 我找到了一种方法,通过使用插件,即使在执行父pom时也可以生成jar文件: ... <packaging>pom</packaging> ... <build> <plugins> <plugin> <groupId>

我对Maven中的多模块项目非常陌生,我刚刚了解到,在创建父项目时,基本上只需要将打包更改为“pom”->
pom
。如果您在父项目上运行
mvn包
,它将不会生成jar文件(如果您在其中包含源代码)。 我找到了一种方法,通过使用插件,即使在执行父pom时也可以生成jar文件:

... 
<packaging>pom</packaging>
...
<build>
<plugins>
 <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-jar-plugin</artifactId>
     <version>2.2</version>
     <executions>
         <execution>
             <id>my-execution-id</id>
             <phase>package</phase>
             <goals>
                 <goal>jar</goal>
             </goals>
         </execution>
     </executions>
 </plugin>
</plugins>          
</build>
...
。。。
聚甲醛
...
org.apache.maven.plugins
maven jar插件
2.2
我的执行id
包裹
罐子
...

我现在的问题是,在父项目中拥有源代码是最佳实践吗?或者最好是将其保留为空,并将其用于插件/依赖项管理等?

如果您需要整个公司的模板或类似的模板,那么只需创建父pom即可(您只需要一个pom文件,不需要创建空项目)。在那里,您可以配置一些东西,比如您想要的存储库、插件等等

可能是这样的

parent-pom.xml (for the whole company, where you configure common stuff, don't put code here)
|_ projectA-parent-pom.xml (team A, doing project A)
|    |_ projectA-child-pom-1.xml
|    |_ projectA-child-pom-2.xml
|_ projectB-parent-pom.xml (team B, doing project B)
     |_ projectB-child-pom-1.xml
     |_ projectB-child-pom-2.xml
     |_ projectB-child-pom-3.xml

编辑:我的答案不好。所以我更新了它。

如果你需要整个公司的模板或者类似的东西,那么只需要创建一个父pom就可以了(你只需要一个pom文件,不需要创建一个空项目)。在那里,您可以配置一些东西,比如您想要的存储库、插件等等

可能是这样的

parent-pom.xml (for the whole company, where you configure common stuff, don't put code here)
|_ projectA-parent-pom.xml (team A, doing project A)
|    |_ projectA-child-pom-1.xml
|    |_ projectA-child-pom-2.xml
|_ projectB-parent-pom.xml (team B, doing project B)
     |_ projectB-child-pom-1.xml
     |_ projectB-child-pom-2.xml
     |_ projectB-child-pom-3.xml

编辑:我的答案不好。所以我更新了它。

不要将源代码放入父POM项目中。这违反了预期,也没有真正的优势。将代码放入模块中。遵循@khmarbaise的评论。

不要将源代码放入父POM项目中。这违反了预期,也没有真正的优势。将代码放入模块中。跟随@khmarbaise的评论。

在这种情况下,我宁愿查看github上流行的java存储库,以了解它们的情况。例如,。首先,如果您的打包是pom,不要尝试在该项目中获取代码,因为它不打算包含代码。这违反了约定而非配置的思想。如果您有代码要编译/测试/打包,则多模块项目有一个子模块,该子模块具有打包
jar
,并且包含代码,并且具有定义的父模块早些时候……在这种情况下,我宁愿检查github上流行的java存储库,以检查它们的运行情况。例如,。首先,如果您的打包是pom,不要尝试在该项目中获取代码,因为它不打算包含代码。这违反了约定而非配置的思想。如果您有代码要编译/测试/打包,则多模块项目有一个子模块,该子模块具有打包
jar
,并且包含代码,并且具有定义的父模块早期的。。。