特殊字符的Maven GroupId

5
选择Maven groupId的最佳实践之一是按照公司的域名选择groupId。一些域名包含特殊字符,尤其是连字符。而且随着新的非ASCII域名出现,域名也可能包含非ASCII字符。
现在我的问题是:
1. 我可以在groupId中使用连字符吗?有哪些合理的替代方案? 2. 如何处理非ASCII域名的特殊字符以生成groupId? 3. 一个具体的问题:我需要为三家独立的公司找到groupId: 公司A的域名是"heccare.de" 公司B的域名是"heccare-international.de" 公司C的域名是"heccare-int.de"
有哪些合理的groupIds呢?

“我可以在groupId中使用减号吗?” - 当您测试时发生了什么? - gnat
2个回答

5
根据 Oracle 在包命名文档中的说明,DNS 名称中的连字符(即-)应替换为下划线(即_),以数字开头的名称应预先加下划线(因此me.123.com 变成 com._123.me),与保留关键字冲突的名称应在后面加下划线(因此int.me.com 变成 com.me.int_)。Unicode 字符也被允许,如标识符规范所示(例如,Character.isJavaIdentifierStart('é') 的值为true)。您的组名称应分别为de.heccarede.heccare_internationalde.heccare_int

3

使用您的域名作为groupID并不是一个坏主意,但也不是必须的。JUnit的groupID只是"junit":

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

我看到其他组的ID是由域名和更多描述性内容组成的,例如com.mycompany.webapicom.mycompany.wslibcom.mycompany.database.util等等...当然,唯一解析为实际域名的是mycompany.com,但我不认为这是个问题。
至于特殊字符,破折号是可以的(刚刚注意到我有一个依赖于Apache Commons I/O的组ID为“commons-io”),但是非ASCII字符,你只能试试!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接