Java Maven:处理不同源/目标版本的构建

Java Maven:处理不同源/目标版本的构建,java,maven,version-control,Java,Maven,Version Control,两个不同的maven Java项目(我们称它们为ProjectA和ProjectB)依赖于同一个库(也是一个maven Java项目,所有三个项目都是自写的)。ProjectA需要为Java1.7编译库,ProjectB需要为1.8编译库。到目前为止,我的库的pom.xml中有以下配置: <build> <plugins> <plugin> <groupId>org.apache.maven.plug

两个不同的maven Java项目(我们称它们为ProjectA和ProjectB)依赖于同一个库(也是一个maven Java项目,所有三个项目都是自写的)。ProjectA需要为Java1.7编译库,ProjectB需要为1.8编译库。到目前为止,我的库的pom.xml中有以下配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

org.apache.maven.plugins
maven编译器插件
3.6.1
1.8
1.8
这样安装库之后,我可以构建ProjectB,但不能构建ProjectA,因为和都设置为1.8。我可以将这两个字段更改为1.7,以允许构建ProjectA,但不允许构建ProjectB

我希望进行适当的版本控制、自动构建等,因此在构建项目之前不能总是更改库的源/目标版本。维护两个库发布分支,以便通过版本控制系统解决问题,这也很烦人,而且看起来并不优雅(这是我当前的方法,我想改变)

如果我用一个变量(例如${jdk.version})替换版本,并在安装lib ProjectA时使用命令行标志-Djdk.version=1.7,出于某种原因,仍然不会生成,声称lib的目标是1.8。显然,这并不等同于手动将1.7放入pom.xml文件中


如何优雅地解决这个问题?如果我试图通过命令行设置相应的属性,为什么maven/Java不能正确地将库设置为1.7?

如果使用1.7编译,使用JDK 8的项目可以使用它?也许我误解了一件事,但那应该有用?看看maven build profiles:@khmarbaise这听起来确实是一个简单的解决方案,但是我相信所使用的框架存在一些问题,尽管我现在记不起细节。@Goibniu这看起来正是我想要的答案,谢谢!如果使用1.7编译,那么使用JDK 8的项目可以使用它吗?也许我误解了一件事,但那应该有用?看看maven build profiles:@khmarbaise这听起来确实是一个简单的解决方案,但是我相信所使用的框架存在一些问题,尽管我现在记不起细节。@Goibniu这看起来正是我想要的答案,谢谢!