选择Maven groupId的一个最佳做法是根据公司的域名选择groupId。某些域名包含特殊字符,尤其是连字符。而且,对于新的非ASCII域,域名也可以包含非ASCII字符。
现在我的问题:
我可以在groupId中使用减号吗?什么是合理的替代方案?
如何处理groupId中非ASCII域名的特殊字符?
一个具体问题:我必须为三家独立公司找到groupIds: 公司A的域名是" heccare.de" 公司B的域名是" heccare-international.de" 公司C的域名是" heccare-int.de"
什么是合理的groupIds?
答案 0 :(得分:1)
将您的域名用作groupID并不是一个坏主意,但这不是必需的。 JUnit的groupID只是“junit”:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
我见过其他的groupID,它们是域名的组合,更具描述性,例如com.mycompany.webapi
,com.mycompany.wslib
,com.mycompany.database.util
等...当然,唯一的解析为实际域的事情是mycompany.com
,但我不认为这是一个问题。
至于特殊字符,破折号是可以的(只是注意到我依赖于Apache Commons I / O,其groupID是“commons-io”),但是非ASCII字符,你只需要试试看!
答案 1 :(得分:1)
根据Oracle documentation on package naming,DNS名称中的连字符(即-
)应替换为下划线(即_
),以数字开头的名称应该被预先强调(因此me.123.com
变为com._123.me
),并且与保留关键字冲突的名称应该被强调后标记(因此int.me.com
变为com.me.int_
)。
根据spec for identifiers,Unicode字符很好(例如,Character.isJavaIdentifierStart('é')
评估为true
)。
您的群组名称将分别为de.heccare
,de.heccare_international
和de.heccare_int
。