我使用Maven开发和构建了我的
Java应用程序.我需要支持
Java 1.6,所以我使用以下属性:
<maven.compiler.target>1.6</maven.compiler.target> <maven.compiler.source>1.6</maven.compiler.source>
不过,当我运行应用程序时,我得到一个“不支持的major.minor版本”错误,我怀疑我的一个依赖jar是一个Java版本比我需要支持的版本更新.
我的问题:
>这甚至可能吗?我认为Maven会照顾这种依赖版本的问题.
>有没有一个简单的方法找出所有我的依赖关系的次要/主要版本? (如果在执行mvn依赖性时可以显示树,则会很棒).
解决方法
问题是,每个依赖(维护者)都可以决定自己使用哪个java版本进行编译(1.5,1.6,1.7,1.8等),所以这不能通过Maven解决.但是您可以确保不使用不同于您喜欢的Java版本的依赖关系.
这可以通过使用Maven Enforcer Plugin使用extra-enforcer-rules:
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>1.4.1</version> <!-- find the latest version at http://maven.apache.org/plugins/maven-enforcer-plugin/ --> <executions> <execution> <id>enforce-bytecode-version</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <enforceBytecodeVersion> <maxJdkVersion>1.6</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-5</version> </dependency> </dependencies> </plugin> </plugins> </build> [...] </project>
如果您使用不同版本的JDK编译的依赖关系,这将破坏您的构建.
原文地址:https://www.jb51.cc/java/122690.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。