我想构建两个不同版本的自定义 SonarQube (SQ) 插件;一个用于 SonarQube 6.7.x LTS 版本,一个用于最新的 7.6 版本。目前,我的 Maven 结构类似于以下内容:
插件 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>指向公共源代码: …