Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
命名JavaMaven项目和生成工件的maven项目的最佳实践_Java_Maven - Fatal编程技术网

命名JavaMaven项目和生成工件的maven项目的最佳实践

命名JavaMaven项目和生成工件的maven项目的最佳实践,java,maven,Java,Maven,我有一个多模块maven项目,看起来像这样 upsilon-node (packaging: pom) |--- upsilon-jar (contains the actual source code - .java files, produces a .jar) |--- upsilon-node-rpm-fedora (produces a Fedora RPM, from the upsilon-jar's .jar) |--- upsilon-node-rpm-debian (prod

我有一个多模块maven项目,看起来像这样

upsilon-node (packaging: pom)
|--- upsilon-jar (contains the actual source code - .java files, produces a .jar)
|--- upsilon-node-rpm-fedora (produces a Fedora RPM, from the upsilon-jar's .jar)
|--- upsilon-node-rpm-debian (products a Debian DEB, from the upsilon-jar's .jar)
|--- upsilon-node-nsis (produces a .exe installer, from the upsilon-jar's .jar)
|--- (various other packages)
我有两个问题:

1) 对我来说,.java源代码在逻辑上应该放在父upsilon节点项目中,但是当packaging设置为.jar时,似乎我不能拥有子模块-子模块只能通过packaging:pom项目实现

2) 这看起来正常吗?我在遵循最佳实践吗?我在某个地方读到一个项目应该正好产生一个工件

期待听到您的想法,谢谢


注意,项目位于GitHub上:


你发现的任何东西,看起来我现在正在遵循最佳实践,非常渴望听到它

在Maven中,Maven本身(这意味着一项要求)支持的最佳实践是,在您的情况下,父节点
upsilon节点
不应包含任何代码(Maven强制您定义打包
pom
)。通常您定义插件(它们的适当版本等)、所有模块的依赖项、配置(编码等)

例如,您在父项中定义了编码:


UTF-8
如果您这样做了,您不需要在子模块中重复,因为它将被继承到子模块

除此之外,在构建中,您没有定义模块之间的任何依赖关系,这似乎是必要的。这可能会导致不可预测的生成结果。例如,您有一个生成tgz的模块,但您不能确定所使用的工件以前是否已构建。所以,定义模块之间的依赖关系,让maven reactor定义执行顺序


因此,对于
规则
一个pom,可以说一个工件或多或少是正确的,因为您已经在使用一个“违反”规则的模块(节点tgz),该模块可以创建多个工件

为什么您总是定义
最终名称
?它只适用于目标文件夹,不适用于其他文件夹。