Maven GroupId带有特殊字符

时间:2014-07-08 14:44:40

标签: maven dns

选择Maven groupId的一个最佳做法是根据公司的域名选择groupId。某些域名包含特殊字符,尤其是连字符。而且,对于新的非ASCII域,域名也可以包含非ASCII字符。

现在我的问题:

  1. 我可以在groupId中使用减号吗?什么是合理的替代方案?

  2. 如何处理groupId中非ASCII域名的特殊字符?

  3. 一个具体问题:我必须为三家独立公司找到groupIds: 公司A的域名是" heccare.de" 公司B的域名是" heccare-international.de" 公司C的域名是" heccare-int.de"

  4. 什么是合理的groupIds?

2 个答案:

答案 0 :(得分:1)

将您的域名用作groupID并不是一个坏主意,但这不是必需的。 JUnit的groupID只是“junit”:

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>

我见过其他的groupID,它们是域名的组合,更具描述性,例如com.mycompany.webapicom.mycompany.wslibcom.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.heccarede.heccare_internationalde.heccare_int