我知道这是针对maven的最佳做法,但也许我的情况是该规则中为数不多的例外情况之一 - 至少我不得不考虑其他选择:(
环境就是这样:
首先,我尝试将所有这些放在一个“简单”的项目中,这个项目可以安装工件。
我目前的方法是一个多模块项目结构,受maven参考第13章的启发,它有一些缺点:
GenericProject
|
+-- GenerateSources from legacy interface
| +-- pom.xml
|
+-- Java
| +-- pom.xml
|
+-- SWC
| +-- pom.xml
|
+-- pom.xml
这种方法有缺点,我从“Java”& “SWC”到“GenerateSource”的内部结构,这是丑陋但可以容忍的 真正阻碍我的方式是我必须大力调整安装和安装。部署插件以获取名称为&的工件。触发整个过程的旧版界面版本。 我现在跑了,但看起来很脆弱。
我考虑过在两个简单的项目中拆分/复制项目:
但这只会解决交叉引用的轻微烦恼。
正如亚伦在评论中指出的那样,我不清楚这个问题。 经过一些实验,这对我来说更加清晰: 基本上我有两个问题需要解决
project.artifactId
有什么建议让整个过程更像maven吗?
提前致谢。
答案 0 :(得分:3)
经过多模块方法的一些弯路后,我得出了以下实用的解决方案:
build-helper-plugin
附加要自动安装/部署的辅助工件两阶段构建:
2.1通过sed
生成一个pom.xml,其中包含已解析的project.artifactId
& project.version
2.2运行maven build
虽然理论上你可以将表达式用作project.artifactId
& project.version
,maven会给你一个警告。 。 。有充分理由:
当您尝试引用生成的工件时,nexus将为您提供“无法读取...的工件描述符”。错误。
我怀疑这是因为在存储库中存储的pom中,表达式尚未解析!
答案 1 :(得分:2)
您应该编写一个附加到generate-sources
阶段的小型Maven插件。有关示例(maven-annotation-plugin),请参阅main class。
这将包括GenerateSource
输出中生成的源,您可以通过在其他POM中包含依赖项来使用这些类。请注意,您应该在target/
下创建这些文件,而不是src/
。
至于安装/部署:这些插件从创建工件的插件中获取其名称。因此,如何设置属性肯定存在问题。在你的情况下,那是JAR plugin。该文档有一个如何set the name of the default artifact的示例。
答案 2 :(得分:1)
尝试使用Maven叠加层,它用于在多个Web应用程序之间共享资源。
http://maven.apache.org/plugins/maven-war-plugin/overlays.html