带有特殊字符的 Maven GroupId

shy*_*ynx 5 dns maven

选择 Maven groupId 的一种最佳实践是根据公司的域名选择 groupId。某些域名包含特殊字符,尤其是连字符减号。此外,对于新的非 ASCII 域,域名还可以包含非 ASCII 字符。

现在我的问题是:

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

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

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

什么是合理的groupId?

Fri*_*ice 5

根据 Oracle关于包命名的文档-DNS 名称中的连字符(即 )应替换为下划线(即_),以数字开头的名称应预先添加下划线(因此me.123.com变为com._123.me),并且与保留关键字应在后加下划线(因此int.me.com变为com.me.int_)。

\n\n

根据标识符规范,Unicode 字符很好(例如,Character.isJavaIdentifierStart(\'\xc3\xa9\')计算结果为true)。

\n\n

您的组名称通常分别为de.heccarede.heccare_international、 和de.heccare_int

\n


Fru*_*ner 3

使用您的域名作为 groupID 不是一个坏主意,但不是必需的。JUnit 的 groupID 就是“junit”:

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我见过其他 groupID 是域名和更具描述性的内容的组合,例如com.mycompany.webapicom.mycompany.wslibcom.mycompany.database.util...当然,唯一解析为实际域的是,mycompany.com但我认为这不是问题。

至于特殊字符,破折号是可以的(刚刚注意到我依赖于 Apache Commons I/O,其 groupID 是“commons-io”),但是非 ASCII 字符,你只需要尝试看看!