如何从一个来源生成多个Maven工件

| 我了解这与Maven最佳做法背道而驰,但也许我的情况是该规则中为数不多的例外之一-至少我对替代方案的思考深陷其中: 环境是这样的: 我们有一个遗留应用程序,它具有基于专有技术的与外界的接口 我们想使用Flash作为新的前端 基于旧版接口,我们生成Flash类并将其打包在Flash SWC中,以供前端开发人员使用 基于旧版接口,我们生成了Java类,这些类将Flash服务请求(通过火焰发送)桥接到旧版接口 为了增加难度,我们不想/不能为每个接口单独使用pom,因为我们有数十个(接口),它们的artifactId仅不同。取而代之的是,我使用一个\“ generic \\”项目结构,它将为每个构建参数化(通过jenkins)。该项目将仅在完全自动化的环境中使用。 首先,我尝试将所有这些都放在一个“简单”项目中,该项目可以安装工件。 我当前的方法是受maven参考第13章启发的多模块项目结构,它本身具有一些缺点:
GenericProject
|
+-- GenerateSources from legacy interface
|   +-- pom.xml
|
+-- Java 
|   +-- pom.xml
|
+-- SWC 
|   +-- pom.xml
|
+-- pom.xml
这种方法的缺点是,我从\“ Java \”和\“ SWC \”引用了\“ GenerateSource \”的内部结构,这很丑陋但可以忍受。 我真正遇到的是,我必须大量调整安装和部署插件,以获取具有触发整个过程的旧版接口的名称和版本的工件。 我现在开始运行它,但是它看起来很脆弱。 我考虑过将项目拆分/复制为两个简单的项目: GenerateSources和Java GenerateSources和SWC 但这只能解决交叉引用带来的小麻烦。 正如亚伦(Aaron)在其评论中指出的那样,我不清楚该问题的陈述。 经过更多的实验,这对我来说变得更加清楚: 基本上我有两个问题要解决 一起安装/部署两个工件 命名与ѭ1不同的文物 有什么建议可以使整个过程更像行家吗? 提前致谢。     
已邀请:
在使用多模块方法绕道而行之后,我得出了以下实用的解决方案: 使用the2ѭ附加要自动安装/部署的辅助工件 两阶段构建: 2.1通过
sed
生成pom.xml,其中包含已解析的
project.artifactId
project.version
2.2运行Maven构建 尽管理论上您可以将表达式用作
project.artifactId
project.version
,但是maven为此警告您。 。 。有充分的理由: 当您尝试引用产生的工件时,nexus将为您提供“无法读取...的工件描述符”错误。 我怀疑这是因为在存储库中存储的pom中未解析表达式!     
您应该编写一个小的Maven插件,并将其附加到
generate-sources
阶段。有关示例(请参见maven-annotation-plugin)(主类)。 这将在ѭ9output的输出中包含生成的源,您可以通过在其他POM中包含依赖项来使用这些类。请注意,您应该在
target/
下创建这些文件,而不是在
src/
下创建这些文件。 至于安装/部署:这些插件从创建工件的插件中获取名称。因此,设置属性的方式一定存在问题。就您而言,这就是JAR插件。该文档提供了一个示例,说明如何设置默认工件的名称。     
尝试使用Maven叠加层,它用于在多个Web应用程序之间共享资源。 http://maven.apache.org/plugins/maven-war-plugin/overlays.html     

要回复问题请先登录注册