Java 如何在Maven和Eclipse中使用不同的依赖版本两次构建相同的源代码?
我想构建两个不同版本的定制SonarQube(SQ)插件;一个用于SonarQube 6.7.x LTS版本,一个用于最新的7.6版本。目前,我有一个类似于以下内容的Maven结构:Java 如何在Maven和Eclipse中使用不同的依赖版本两次构建相同的源代码?,java,eclipse,maven,m2eclipse,Java,Eclipse,Maven,M2eclipse,我想构建两个不同版本的定制SonarQube(SQ)插件;一个用于SonarQube 6.7.x LTS版本,一个用于最新的7.6版本。目前,我有一个类似于以下内容的Maven结构: 母公司 通用:工具和插件版本都使用的通用代码,不使用SQAPI 工具:一些相关的命令行实用程序,不使用SQAPI plugin-6.7:SQ 6.7的插件代码 plugin-7.6:SQ 7.6的插件代码 dist:构建包含CLI实用程序、插件版本、依赖项许可证和源代码的发行版zip plugin-6.7和
- 母公司
- 通用:工具和插件版本都使用的通用代码,不使用SQAPI
- 工具:一些相关的命令行实用程序,不使用SQAPI
- plugin-6.7:SQ 6.7的插件代码
- plugin-7.6:SQ 7.6的插件代码
- dist:构建包含CLI实用程序、插件版本、依赖项许可证和源代码的发行版zip
<module>plugin-common/pom-6.7.xml</module>
<module>plugin-common/pom-7.6.xml</module>
plugincommon/pom-6.7.xml
插件common/pom-7.6.xml
这种方法的问题是我无法将这些模块导入Eclipse,因为m2eclipse只支持pom.xml作为文件名
方法2
与上述类似,但对pom.xml文件使用单独的子目录,并使用${project.basedir}/./src/main/java
指向公共源代码:
- 通用插件
- src/main/java
- src/main/resources
- pom.xml:6.7和7.6模块的父级
- 6.7/pom.xml
- 7.6/pom.xml
${project.basedir}/./plugin common/src/main/java
将公共代码作为源文件夹添加到plugin-6.7和plugin-7.6模块中
在Eclipse中,由于“Access…/src/main/java目录在project base目录之外”的警告,此操作再次失败。我现在选择了以下方法,效果非常好 Maven结构:
- 母公司
- 通用:工具和插件版本都使用的通用代码,不使用SQAPI
- 工具:一些相关的命令行实用程序,不使用SQAPI
- 插件:SonarQube插件代码
- dist:构建包含CLI实用程序、插件版本、依赖项许可证和源代码的发行版zip
- myproject.plugin.common:SQ 6.7和7.6实现之间共享的代码
- myproject.plugin.sq67:SonarQube 6.7-7.5.x的特定代码
- myproject.plugin.sq76:SonarQube 7.6的特定代码+
org.sonarsource.sonarqube
声纳插件api
${sonarqube.version}
假如
org.sonarsource.sonar-packaging-maven-plugin
声纳封装maven插件
1.16
真的
我的钥匙
myproject.plugin.common.MyPlugin
插件名称
描述
真的
6.7
这允许插件使用SonarQube 6.7+,即使API依赖版本设置为7.6(参见下面的配置文件)。MyPlugin类是一个通用类,它使用Java反射加载特定于6.7或7.6的实现,具体取决于插件运行的SonarQube版本
最后,父pom.xml定义了以下两个概要文件:
违约
真的
7.6
常见的
插件
工具
距离
检查SQ6.7兼容性
假的
6.7
常见的
插件
org.apache.maven.plugins
maven编译器插件
**/sq76/**
默认配置文件现在构建了一个与SonarQube 6.7及更高版本兼容的插件,如果在该平台上运行,则启用了7.6特定功能