我目前正在将一些项目从Ant迁移到Maven.循规蹈矩,因为我,我想用行之有效的约定查找groupId和artifactId,但我找不到任何详细的约定(也有一些,但不包括我想了解一下点).
以此项目为例,首先是Java包: com.mycompany.teatimer
Tea计时器实际上是两个单词,但Java包命名约定禁止插入下划线或连字符,所以我将它们全部写在一起.
我选择了groupId相同的包ID,因为我认为这是一个好主意.是吗?
最后,我必须选择一个artifactId,我目前去了teatimer.但是当我查看其他Maven项目时,他们使用连字符来分割artifactIds中的单词,如下所示:tea-timer.但是当连接到groupId:时确实看起来很奇怪com.mycompany.teatimer.tea-timer.
你会怎么做?
另一个例子:
包裹名字: com.mycompany.awesomeinhouseframework
groupId:( com.mycompany.awesomeinhouseframework?)
artifactId:( awesome-inhouse-framework?)
我们目前正在努力对公司现有的项目进行整理.我们已经执行了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
1.背景
我的Maven项目有很多的模块和子模块与jars和wars一切工作.我也可以在服务器上部署它而没有任何问题.
我决定遵循这个maven命名转换,我正在进行一些测试project.name并project.build.finalName拥有一个合适的名称.
我定义project.name为根工件创建的模式是company-${project.artifactId},对于模块和子模块是${project.parent.name}-${project.artifactId}:
模式project.build.finalName是${project.name}-${project.version}:
但maven没有生成这些文件,而是给了我一个StackOverflowError.
2.重现错误的示例
你可以从github克隆这个例子:https://github.com/pauloleitemoreira/company-any-artifact
在github中,有一个master分支,它将重现此错误.还有only-modules分支,这是一个工作示例,用于${project.parent.name}生成finalName我想要的jar .
让我们考虑一个带有一个根pom工件,一个pom模块和一个子模块的maven项目.
-any-artifact
|
|-any-module
|
|-any-submodule
Run Code Online (Sandbox Code Playgroud)
2.1任何神器
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>any-artifact</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>company-${project.artifactId}</name>
<modules>
<module>any-module</module>
</modules>
<!-- if remove finalName, maven will not …Run Code Online (Sandbox Code Playgroud)