如何使用Maven创建跨项目源代码版本

时间:2010-11-11 01:26:05

标签: java maven-2 maven-assembly-plugin

我有一个项目,我需要发布源代码。我遇到的问题是我需要为我们开发的所有代码创建一个源代码版本。代码跨越多个项目,但我想利用maven,以便只发布我们实际使用的jar的源代码。

例如:

  • 核心代码项目(多模块maven项目)
  • 网络应用程序项目(多模块maven项目)。包含我们的app模块以及一些支持jar模块。取决于核心代码项目的一些罐子。

现在我想发布Web应用程序项目的所有源代码,但只发布Web应用程序使用的核心代码项目的源代码。

我可以和maven一起做吗?

我觉得有可能使用程序集插件和源代码插件,但我不清楚如何将它们组合在一起。

3 个答案:

答案 0 :(得分:3)

首先你的问题有点不清楚。让我假设某些事情并继续。 我相信以下是您的文件夹结构。

  • 网络应用项目
    • 一些源代码文件夹
    • 的pom.xml
  • 核心代码项目
    • 一些源代码文件夹
    • 的pom.xml

获取核心代码项目并在pom.xml中更改先前版本的版本。 假设它是1.0,将其改为1.1

 <groupId>core code project related</groupId>
  <artifactId>core code project</artifactId>
  <name>core code</name>
  <version>1.1</version>

进行更改以适应核心代码项目中的Web应用程序项目。

后, 在Web应用程序项目中为pom.xml中的核心代码项目添加依赖项

  <dependency>
     <groupId>core code project related</groupId>
     <artifactId>core code project</artifactId>
     <name>core code</name>
     <version>1.1</version>
  </dependency>

通过这种方式,1.1版的核心项目将只有与web app相关的代码。 目前我们正在使用这种方法。希望能帮助到你。如果你想要别的东西,请告诉我。

答案 1 :(得分:1)

  

我觉得有可能使用程序集插件和源代码插件,但我不清楚如何将它们组合在一起。

如果我正确理解了这个问题,一个解决方案就是创建一个“聚合器”项目,列出所有需要的模块(来自webapp的相关模块和来自核心的相关模块)并使用source:aggregate目标来自Maven Source Plugin

答案 2 :(得分:0)

我不确定您为什么要这样做,您的网络应用程序项目中的pom将明确列出您使用的代码依赖项的版本,以便您可以轻松找到源代码。听起来你想要存储两次相同的工件。因此,如果您的网络应用使用core-x-1.2.3.jarcore-y-4.5.6.jar,您会生成一个网络应用来源工件,其中包含来自这些核心广告文具中的来源以及实际的网络应用来源?

您可以使用maven versions plugin更新您的网络应用程序pom以使用最新版本的核心依赖项,我通过在过去的CI服务器中运行shell脚本实现了自动化。这意味着无论何时发布新版本的Web应用程序,您都将使用最新版本的核心代码,而您只需从版本控制中更新您的Web应用程序。