Man*_*noj 20 maven-2 naming-conventions
我们目前正在努力对公司现有的项目进行整理.我们已经执行了POC,目前正在记录我们的学习和指导.我为maven工件提出了以下命名约定.请分享您的意见
注意:在我们公司,projectname始终是唯一的
例如:org.companyname.projectname:org.companyname.projectname-1.0.0.pom
例如:org.companyname.projectname:org.companyname.projectname.modulename-1.0.0.jar
例如:org.companyname.projectname:org.companyname.projectname-1.0.0.pom
例如:org.companyname.projectname:org.companyname.projectname.subcategory-1.0.0.pom
例如:org.companyname.projectname:org.companyname.projectname.subcategory.modulename-1.0.0.jar
Pét*_*rök 18
您不需要org.companyname在artifactId中包含IMO - 它只是复制了groupId中已存在的信息,从而使工件名称更长且可读性更低.
更新:仅供参考,通过查看项目的依赖关系,我看到了很多类似的例子,例如
<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>
Run Code Online (Sandbox Code Playgroud)
然后有许多组和工件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>
Run Code Online (Sandbox Code Playgroud)
但是我没有看到任何具有完全限定的组ID和相同的工件ID(例如对于Log4J而言org.apache.log4j:org.apache.log4j).
Pas*_*ent 17
对于与artifactId匹配的groupId使用非限定名称(例如)是一种旧的弃用做法,不推荐使用:它在文件系统级别很糟糕,它会生成"存储库混乱",这会使浏览存储库时难以找到工件(甚至如果大多数人现在使用搜索引擎).log4j
建议是在groupId中包含你的域名,我肯定不会在artifactId中重复它(据我所知,Spring不是这样做的 - 除了可能是OSGI工件?).
这是我使用的:
例如:org.companyname.projectname:root-1.0.0.pom
例如:org.companyname.projectname:subcategory-parent-1.0.0.pom
例如:org.companyname.projectname:modulename-1.0.0.jar
我还使用<description>元素约定在反应堆构建期间获得清晰的概述.以下是宠物项目的示例:
$ mvn compile [INFO] Scanning for projects... [INFO] Reactor build order: [INFO] Personal Sandbox - Samples - Parent POM [INFO] Personal Sandbox - Samples - EJB3 and Cargo Sample [INFO] Personal Sandbox - Tools - Parent POM [INFO] Personal Sandbox - Tools - Shared Verification Resources [INFO] Personal Sandbox - Samples - EJB3 and Cargo Sample - Services [INFO] Personal Sandbox - Samples - EJB3 and Cargo Sample - Functests [INFO] Sandbox Externals POM
这很大程度上受到了Vincent Massol组织大型构建的方式的启发,就像他对XWiki或Cargo一样.
| 归档时间: |
|
| 查看次数: |
20963 次 |
| 最近记录: |