2

在我的pom.xml我添加了 maven-jdeps-plugin:

<project ...>
  <groupId>org.optaplanner</groupId>
  <artifactId>optaplanner-examples</artifactId>
  <!-- packaging is the default, so "jar" -->
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jdeps-plugin</artifactId>
        <version>3.0.0</version>
        <goals>
          <goal>jdkinternals</goal>
          <goal>test-jdkinternals</goal>
        </goals>
      </plugin>
    </plugins>
  </build>
</project>

但是当我使用 JDK 8 和 maven 3.3.3 运行它时,jdeps 插件不做任何检查

$ mvn clean install -DskipTests | grep plugin
[INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ optaplanner-examples ---
[INFO] --- maven-enforcer-plugin:1.4:enforce (enforce-plugin-versions) @ optaplanner-examples ---
[INFO] --- maven-enforcer-plugin:1.4:enforce (enforce-java-version) @ optaplanner-examples ---
[INFO] --- maven-enforcer-plugin:1.4:enforce (enforce-maven-version) @ optaplanner-examples ---
[INFO] --- maven-enforcer-plugin:1.4:enforce (ban-uberjars) @ optaplanner-examples ---
[INFO] --- maven-checkstyle-plugin:2.15:check (validate) @ optaplanner-examples ---
[INFO] --- maven-enforcer-plugin:1.4:enforce (no-managed-deps) @ optaplanner-examples ---
[INFO] --- buildnumber-maven-plugin:1.3:create (get-scm-revision) @ optaplanner-examples ---
[INFO] --- build-helper-maven-plugin:1.9.1:add-source (default) @ optaplanner-examples ---
[INFO] --- build-helper-maven-plugin:1.9.1:parse-version (default) @ optaplanner-examples ---
[INFO] --- maven-resources-plugin:2.7:resources (default-resources) @ optaplanner-examples ---
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ optaplanner-examples ---
[INFO] --- maven-enforcer-plugin:1.4:enforce (enforce-direct-dependencies) @ optaplanner-examples ---
[INFO] --- maven-resources-plugin:2.7:testResources (default-testResources) @ optaplanner-examples ---
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ optaplanner-examples ---
[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ optaplanner-examples ---
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ optaplanner-examples ---
[INFO] --- maven-jar-plugin:2.6:test-jar (test-jar) @ optaplanner-examples ---
[INFO] --- maven-source-plugin:2.4:jar-no-fork (attach-sources) @ optaplanner-examples ---
[INFO] --- maven-source-plugin:2.4:test-jar-no-fork (attach-test-sources) @ optaplanner-examples ---
[INFO] --- maven-failsafe-plugin:2.18.1:integration-test (default) @ optaplanner-examples ---
[INFO] --- maven-failsafe-plugin:2.18.1:verify (default) @ optaplanner-examples ---
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ optaplanner-examples ---

额外信息:

$ echo $JAVA_HOME
/usr/lib/jvm/java-openjdk
$ /usr/lib/jvm/java-openjdk/bin/java -version
openjdk version "1.8.0_71"
OpenJDK Runtime Environment (build 1.8.0_71-b15)
OpenJDK 64-Bit Server VM (build 25.71-b15, mixed mode)
4

2 回答 2

2

由于该问题被标记为 Java-9。maven jdeps插件版本最近3.1.0正式发布,号称也兼容jdk9

正如@khmarbaise 在评论中所指出的,插件的官方使用页面也将实现声明为:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jdeps-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
      <execution>
        <goals>
          <goal>jdkinternals</goal> <!-- verify main classes -->
          <goal>test-jdkinternals</goal> <!-- verify test classes -->
        </goals>
      </execution>
    </executions>
    <configuration>
      ...
    </configuration>
</plugin>

其中

如果检测到任何内部 API 的使用,构建将停止并失败。

可以使用failOnWarning默认值设置为的标志进行配置true

于 2017-09-08T20:30:47.347 回答
0

As Di Matteo suggested in the comments, this config fixes it:

<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jdeps-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
      <execution>
        <goals>
          <goal>jdkinternals</goal>
          <goal>test-jdkinternals</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>
</build>

The usage of <goals> directly under <plugin> is deprecated, doesn't work but doesn't fail fast...

于 2016-02-04T10:13:07.220 回答