我有一个由客户使用Java 7运行时运行的项目。
我在一个针对Java 8编译的工件中添加了一个依赖项--使用Java 8特性,比如lambdas和streams。
在编译我的项目时,我没有发现有什么错误。
但是,在运行时,我得到了一堆错误,很明显,我没有识别一些东西。
是否有一种方法可以保护我的项目不使用工件,这取决于更高级别的Java?,谢谢。
*对于一个工件来说,这是一个一般的问题,取决于一些低级别的Java,它试图添加依赖于另一个依赖于更高级别Java的工件。
*我猜这是因为Java不是显式依赖定义的一部分,而是隐式的。问题是如何使它更加明确和保护。
发布于 2016-12-21 11:37:10
您可以将maven-enforcer插件与强制执行规则结合使用,它如下所示:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4.1</version>
<executions>
<execution>
<id>enforce-bytecode-version</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<enforceBytecodeVersion>
<maxJdkVersion>1.7</maxJdkVersion>
<excludes>
<exclude>org.mindrot:jbcrypt</exclude>
</excludes>
</enforceBytecodeVersion>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>extra-enforcer-rules</artifactId>
<version>1.0-beta-6</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
[...]
</project>您可以使使用另一个执法者规则更加安全,您可以使用它强制使用正确的JDK。
https://stackoverflow.com/questions/41261694
复制相似问题