【问题标题】:How to create a cross project source release with Maven如何使用 Maven 创建跨项目源代码发布
【发布时间】:2010-11-11 01:26:04
【问题描述】:

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

例如:

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

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

我可以用 maven 做到这一点吗?

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    核心代码项目相关核心代码项目核心代码1.1版本>

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

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

    核心代码项目相关核心代码项目核心代码1.1版本> 依赖>

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这和我想要的很接近,但是我今天居然发现我需要包含pom文件并以可以用maven构建的形式分发。我想出的解决方案是在 web 应用程序项目中使用 apache source-release 程序集。这很好,因为我需要所有这些资源。对于核心项目,我创建了一个自定义版本的源发布程序集,它明确选择了我需要的模块。不大好。但最后我有两个 zip 文件,其中包含构建项目所必需的源代码,我们可以提供给其他人。
      • @zorro2b:未来的需求很难预料 :)
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-14
        • 1970-01-01
        相关资源
        最近更新 更多