微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

需要Java版本的Maven依赖关系?

我使用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 举报,一经查实,本站将立刻删除。

相关推荐