软件包名称必须与项目的工件的groupId相同吗?

时间:2020-03-20 17:27:48

标签: java maven package

我有一个maven项目,其pom如下所示:

<groupId>com.example.check</groupId>
  <artifactId>first-project</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

该项目有src/main/java,所有Java源代码都将驻留在其中。

是否必须使软件包名称与pom的artifactIdcom/example/check中的名称相同。

我们可以给一个不同的包名称,例如:abc/xyz/check

package name与pom的artifactId有何关系。它们之间有什么联系?

2 个答案:

答案 0 :(得分:2)

不,Maven不在乎。它只是二进制blob,通常对Java来说具有特殊的含义。

如果您在工件的名称和内容之间进行至少某种对齐,将使用户(和维护人员)的生活更加轻松。

答案 1 :(得分:1)

这不是强制性的。

但是,人们倾向于遵循一些惯例。按照Maven documentation的命名方式:

组ID应该遵循Java的程序包名称规则。这意味着它以您控制的反向域名开头。例如, org.apache.maven,org.apache.commons

Maven不执行此规则。许多遗留项目不遵循此约定,而是使用单个单词组ID。但是,很难获得一个新的单个单词组ID的批准以包含在Maven Central存储库中

Java包名称是任意的,只要您遵循以下语言语法即可。参见official Oracle documentation here

相对于artifactId,这可以是您想要的任何内容。