我们目前正在努力使公司现有的项目更加自动化。我们已经执行了 POC,目前正在记录我们的经验和指南。我为 Maven 工件提出了以下命名约定。请分享您的评论
注意:在我们公司,项目名称始终是唯一的
对于单级多模块 Maven 项目
父级(pom)
- groupId : org.companyname.projectname
- artifactId : org.companyname.projectname
- 版本:x.x.x
例如:org.companyname.projectname:org.companyname.projectname-1.0.0.pom
模块(jar)
- groupId:org.companyname.projectname
- artifactId : org.companyname.projectname.modulename
- 版本:x.x.x
例如:org.companyname.projectname:org.companyname.projectname.modulename-1.0.0.jar
对于多级多模块 Maven 项目
父级(pom)
- groupId : org.companyname.projectname
- artifactId : org.companyname.projectname
- 版本:x.x.x
例如:org.companyname.projectname:org.companyname.projectname-1.0.0.pom
子父级 (pom)
- groupId:org.companyname.projectname
- artifactId:org.companyname.projectname.subcategory
- 版本:x.x.x
例如:org.companyname.projectname:org.companyname.projectname.subcategory-1.0.0.pom
模块(jar)
- groupId:org.companyname.projectname
- artifactId:org.companyname.projectname.subcategory.modulename
- 版本:x.x.x
例如:org.companyname.projectname:org.companyname.projectname.subcategory.modulename-1.0.0.jar
最佳答案
IMO,您不需要在artifactId中包含org.companyname
- 它只是复制groupId中已经存在的信息,从而使artifact名称更长且可读性较差。
更新:仅供引用,查看我们项目的依赖项,我看到很多类似的示例,例如
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jboss-maven-plugin</artifactId>
<groupId>net.sf.barcode4j</groupId>
<artifactId>barcode4j-fop-ext-0.20.5-complete</artifactId>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<groupId>opensymphony</groupId>
<artifactId>oscache</artifactId>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-libs</artifactId>
<groupId>javax.resource</groupId>
<artifactId>connector-api</artifactId>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
还有很多组和工件 ID 是相同的非限定名称,例如:
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<groupId>velocity</groupId>
<artifactId>velocity</artifactId>
<groupId>fop</groupId>
<artifactId>fop</artifactId>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
但我还没有看到任何具有完全限定的组 ID 和相同的工件 ID(例如,对于 Log4J 将是 org.apache.log4j:org.apache.log4j
)。
关于maven-2 - Maven 工件的命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3150003/