0

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

例如:

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

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

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

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

4

3 回答 3

3

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

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

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

<groupId>核心代码项目相关</groupId>
  <artifactId>核心代码项目</artifactId>
  <name>核心代码</name>
  <版本>1.1</版本>

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

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

  <依赖>
     <groupId>核心代码项目相关</groupId>
     <artifactId>核心代码项目</artifactId>
     <name>核心代码</name>
     <版本>1.1</版本>
  </依赖>

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

于 2010-11-11T05:12:38.577 回答
1

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

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

于 2010-11-11T17:11:21.900 回答
0

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

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

于 2010-11-11T17:10:23.703 回答