小编rse*_*den的帖子

如何在 Maven 和 Eclipse 中使用不同的依赖版本两次构建相同的源代码?

我想构建两个不同版本的自定义 SonarQube (SQ) 插件;一个用于 SonarQube 6.7.x LTS 版本,一个用于最新的 7.6 版本。目前,我的 Maven 结构类似于以下内容:

  • 家长
    • common:两个工具和两个插件版本使用的通用代码,不使用 SQ API
    • tool:一些相关的命令行实用程序,不使用SQ API
    • plugin-6.7:SQ 6.7 的插件代码
    • plugin-7.6:SQ 7.6 的插件代码
    • dist:构建包含 CLI 实用程序、插件版本、依赖许可证和源代码的发行版 zip

插件 6.7 和 7.6 的大部分源代码和资源是相同的;只有少数类别不同。因此,我想将此通用代码移动到某个共享源文件夹/模块。

不过,我仍然想编译这个通用代码两次,以验证代码是否针对两个 SQ API 版本进行编译。在 Eclipse 中,这应该显示为两个单独的源文件夹或项目,因此我可以轻松验证公共代码不使用 6.7 API 中尚未提供的任何 SQ API,并且不使用任何已删除的 API或在 7.6 API 中已弃用。

最好我想坚持在一个构建中构建两个插件版本,所以如果可能的话我想避免使用两个单独的配置文件。

这有可能吗?

我尝试过的

通过 Maven,我找到了几种让它工作的方法,但我无法让这些方法中的任何一种与 m2eclipse 一起工作。

方法一

创建一个新模块plugin-common,包含pom-6.7.xml和pom-7.6.xml。除了工件 ID 或分类器以及对不同 SQ API 版本的依赖之外,两个 pom 本质上是相同的。父项目将它们定义为 2 个独立的模块,使用

<module>plugin-common/pom-6.7.xml</module>
<module>plugin-common/pom-7.6.xml</module>
Run Code Online (Sandbox Code Playgroud)

这种方法的问题是我无法将这些模块导入 Eclipse,因为 m2eclipse 仅支持 pom.xml 作为文件名。

方法2

与上面类似,但为 pom.xml 文件使用单独的子目录,并使用<sourceDirectory>${project.basedir}/../src/main/java</sourceDirectory>指向公共源代码: …

java eclipse m2eclipse maven

5
推荐指数
1
解决办法
1062
查看次数

标签 统计

eclipse ×1

java ×1

m2eclipse ×1

maven ×1