无法解析项目 org.openjdk.jmh:jmh-core:jar:1.21 的依赖项

Could not resolve dependencies for project org.openjdk.jmh:jmh-core:jar:1.21

想开始做我从现在开始写的方法的基准测试,有很长一段时间的动力,终于决定从昨天开始这样做。但是我对我的设置过程感到震惊。

但是当我 运行 命令 mvn clean install 时,出现以下错误:

[ERROR] Failed to execute goal on project TestOptional: Could not resolve dependencies for project Vishwaratna:TestOptional:jar:1.0-SNAPSHOT: The following artifacts could not be resolve d: org.openjdk.jmh:jmh-core:jar:1.21, org.openjdk.jmh:jmh-generator-annprocess:jar:1.21: Could not find artifact org.openjdk.jmh:jmh-core:jar:1.21 in art_all (http://maven/artifactory/li bs-snapshot)

我想我必须强制更新回购协议,所以我 运行 mvn -U clean install ,还是没有运气。

进行了大量搜索并浏览了 N 个 SO 线程,但仍然无法找出我哪里出错了。

当我 运行 我的 Testing.java class 时,我收到以下消息:

No matching benchmarks. Miss-spelled regexp?

Use EXTRA verbose mode to debug the pattern matching.

Process finished with exit code 1

我很困惑,当 maven 无法从中央代表处找到那些 JMH 库时,为什么我的带有所有注释的代码没有显示红色编译错误??如果正确导入了库,那么为什么当我从终端 运行 mvn clean install 时收到无法下载 xx 的错误?

经过2个小时的挣扎,我想放弃POM.xml并尝试手动添加jar,我下载了JMH注释jar和JMH核心jar并手动配置了路径。猜猜还是没有运气。

如果你想知道我在编码什么:

import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;

public class Testing {
    @Benchmark
    @BenchmarkMode({ Mode.AverageTime})
    public void wellHelloThere() {
        // this method was intentionally left blank.
    }
    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
            .include(Testing.class.getSimpleName())
            .forks(1)
            .build();

        new Runner(opt).run();
    }
}

我的POM.XML

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>Vishwaratna</groupId>
    <artifactId>TestOptional</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <jmh.version>1.21</jmh.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-core</artifactId>
            <version>${jmh.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-generator-annprocess</artifactId>
            <version>${jmh.version}</version>
        </dependency>
    </dependencies>
    <repositories>

            <repository>
                <id>central-repo</id>
                <name>Central Repository</name>
                <url>http://repo1.maven.org/maven2</url>
                <releases>
                    <enabled>false</enabled>
                    <updatePolicy>always</updatePolicy>
                    <checksumPolicy>warn</checksumPolicy>
                </releases>
            </repository>


    </repositories>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>

                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.openjdk.jmh</groupId>
                            <artifactId>jmh-generator-annprocess</artifactId>
                            <version>1.21</version>
                        </path>
                    </annotationProcessorPaths>

                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>run-benchmarks</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <configuration>
                            <classpathScope>test</classpathScope>
                            <executable>java</executable>
                            <arguments>
                                <argument>-classpath</argument>
                                <classpath />
                                <argument>org.openjdk.jmh.Main</argument>
                                <argument>.*</argument>
                            </arguments>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>

                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

我想要一个详细的解决方案,这对以后偶然发现这个话题的人会有帮助。

ref 并尝试过:

运行 以下命令:mvn versions:display-dependency-updates

输出:

[INFO]
[INFO] All plugins with a version specified are using the latest versions.
[INFO]
[WARNING] The following plugins do not have their version specified:
[WARNING]   maven-clean-plugin .......................... (from super-pom) 2.5
[WARNING]   maven-compiler-plugin ..................... (from super-pom) 2.0.2
[WARNING]   maven-deploy-plugin ......................... (from super-pom) 2.3
[WARNING]   maven-install-plugin ........................ (from super-pom) 2.4
[WARNING]   maven-jar-plugin ............................ (from super-pom) 2.4
[WARNING]   maven-resources-plugin ...................... (from super-pom) 2.6
[WARNING]   maven-site-plugin ........................... (from super-pom) 3.3
[WARNING]   maven-surefire-plugin .................... (from super-pom) 2.12.4
[WARNING]   org.codehaus.mojo:exec-maven-plugin ........................ 1.5.0
[INFO]
[WARNING] Project does not define minimum Maven version, default is: 2.0
[INFO] Plugins require minimum Maven version of: 3.0
[INFO] Note: the super-pom from Maven 3.2.5 defines some of the plugin
[INFO]       versions and may be influencing the plugins required minimum Maven
[INFO]       version.
[INFO]
[ERROR] Project does not define required minimum version of Maven.
[ERROR] Update the pom.xml to contain
[ERROR]     <prerequisites>
[ERROR]       <maven>3.0</maven>
[ERROR]     </prerequisites>
[INFO]
[INFO] Require Maven 2.0.6 to use the following plugin updates:
[INFO]   maven-clean-plugin .............................................. 2.5
[INFO]   maven-deploy-plugin ........................................... 2.8.1
[INFO]   maven-install-plugin .......................................... 2.5.1
[INFO]   maven-jar-plugin ................................................ 2.4
[INFO]   maven-resources-plugin .......................................... 2.6
[INFO]   maven-site-plugin ............................................. 2.0.1
[INFO]   org.codehaus.mojo:exec-maven-plugin ........................... 1.2.1
[INFO]
[INFO] Require Maven 2.0.9 to use the following plugin updates:
[INFO]   maven-compiler-plugin ........................................... 3.1
[INFO]   maven-surefire-plugin .......................................... 2.17
[INFO]
[INFO] Require Maven 2.2.0 to use the following plugin updates:
[INFO]   maven-site-plugin ............................................... 3.0
[INFO]
[INFO] Require Maven 2.2.1 to use the following plugin updates:
[INFO]   maven-clean-plugin ............................................ 2.6.1
[INFO]   maven-compiler-plugin ........................................... 3.3
[INFO]   maven-deploy-plugin ........................................... 2.8.2
[INFO]   maven-install-plugin .......................................... 2.5.2
[INFO]   maven-jar-plugin ................................................ 2.6
[INFO]   maven-resources-plugin .......................................... 2.7
[INFO]   maven-site-plugin ............................................... 3.4
[INFO]   maven-surefire-plugin ........................................ 2.19.1
[INFO]   org.codehaus.mojo:exec-maven-plugin ........................... 1.4.0
[INFO]
[INFO] Require Maven 3.0 to use the following plugin updates:
[INFO]   maven-compiler-plugin ................................. 3.8.0-jboss-2
[INFO]   maven-resources-plugin ........................................ 3.0.2
[INFO]   maven-site-plugin ............................................... 3.6
[INFO]   org.codehaus.mojo:exec-maven-plugin ........................... 1.5.0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11:33 min
[INFO] Finished at: 2019-04-10T14:45:21+05:30
[INFO] Final Memory: 15M/261M
[INFO] ------------------------------------------------------------------------

编辑:

使用命令 mvn -U clean install ,我强制更新存储库并获得了这些下载。

Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered while building the effective model for Vishwaratna:TestOptional:jar:1.0-SNAPSHOT [WARNING] 'build.plugins.plugin.(groupId:artifactId)' must be unique but found duplicate declaration of plugin org.apache.maven.plugins:maven-compiler-plugin @ line 86, column 21 [WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 86, column 21 [WARNING] 'build.plugins.plugin.version' for org.codehaus.mojo:exec-maven-plugin is missing. @ line 63, column 21 [WARNING] [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. [WARNING] [WARNING] For this reason, future Maven versions might no longer support building such malformed projects. [WARNING] [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building TestOptional 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: http://maven/artifactory/libs-snapshot/org/codehaus/mojo/exec-maven-plugin/maven-metadata.xml Downloading: http://maven/artifactory/libs-snapshot/org/codehaus/mojo/exec-maven-plugin/maven-metadata.xml Downloaded: http://maven/artifactory/libs-snapshot/org/codehaus/mojo/exec-maven-plugin/maven-metadata.xml (873 B at 0.2 KB/sec) Downloaded: http://maven/artifactory/libs-snapshot/org/codehaus/mojo/exec-maven-plugin/maven-metadata.xml (873 B at 0.2 KB/sec) Downloading: http://maven/artifactory/libs-snapshot/org/openjdk/jmh/jmh-core/1.21/jmh-core-1.21.pom Downloading: http://maven/artifactory/libs-snapshot/org/openjdk/jmh/jmh-core/1.21/jmh-core-1.21.pom [WARNING] The POM for org.openjdk.jmh:jmh-core:jar:1.21 is missing, no dependency information available Downloading: http://maven/artifactory/libs-snapshot/org/openjdk/jmh/jmh-generator-annprocess/1.21/jmh-generator-annprocess-1.21.pom Downloading: http://maven/artifactory/libs-snapshot/org/openjdk/jmh/jmh-generator-annprocess/1.21/jmh-generator-annprocess-1.21.pom [WARNING] The POM for org.openjdk.jmh:jmh-generator-annprocess:jar:1.21 is missing, no dependency information available Downloading: http://maven/artifactory/libs-snapshot/org/openjdk/jmh/jmh-core/1.21/jmh-core-1.21.jar Downloading: http://maven/artifactory/libs-snapshot/org/openjdk/jmh/jmh-generator-annprocess/1.21/jmh-generator-annprocess-1.21.jar Downloading: http://maven/artifactory/libs-snapshot/org/openjdk/jmh/jmh-generator-annprocess/1.21/jmh-generator-annprocess-1.21.jar Downloading: http://maven/artifactory/libs-snapshot/org/openjdk/jmh/jmh-core/1.21/jmh-core-1.21.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 17.150 s [INFO] Finished at: 2019-04-10T14:57:16+05:30 [INFO] Final Memory: 7M/125M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal on project TestOptional: Could not resolve dependencies for project Vishwaratna:TestOptional:jar:1.0-SNAPSHOT: The following artifacts could not be resolve d: org.openjdk.jmh:jmh-core:jar:1.21, org.openjdk.jmh:jmh-generator-annprocess:jar:1.21: Could not find artifact org.openjdk.jmh:jmh-core:jar:1.21 in art_all (http://maven/artifactory/li bs-snapshot)

这表明我没有任何 proxy 问题,现在当我在浏览器中使用任何 JMH link 时,我得到一个json 响应,示例:

Link: http://maven/artifactory/libs-snapshot/org/openjdk/jmh/jmh-core/1.21/jmh-core-1.21.jar

消息:

{
  "errors" : [ {
    "status" : 404,
    "message" : "Could not find resource"
  } ]
}

设置XML

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <localRepository>C:\GBO_ROOT\Repo</localRepository> 

    <servers>
        <server>
            <id>TomcatServer</id>
            <username>admin</username>
            <password>password</password>
        </server>
    </servers>
    <mirrors>   
     <mirror> 
      <id>art_central</id> 
      <name>Artifactory Mirror of Central</name> 
      <url>http://maven/artifactory/libs-snapshot</url> 
      <mirrorOf>central</mirrorOf> 
    </mirror> 
    <mirror> 
      <id>art_all</id> 
      <name>Artifactory Mirror of Central</name> 
      <url>http://maven/artifactory/libs-snapshot</url> 
      <mirrorOf>*</mirrorOf> 
    </mirror> 
  </mirrors>
  <profiles>
    <profile>  
      <id>artifactory</id>  
      <repositories>  
        <repository>  
          <snapshots />  
          <id>snapshots</id>  
          <name>libs-snapshot</name>  
          <url>http://maven/artifactory/libs-snapshot</url>   
        </repository>  
      </repositories>  
      <pluginRepositories>  
        <pluginRepository>  
          <snapshots />  
          <id>snapshots</id>  
          <name>plugins-snapshot</name>  
          <url>http://maven/artifactory/plugins-snapshot</url>   
        </pluginRepository>  
      </pluginRepositories>  
    </profile>  
  </profiles>

  <activeProfiles>  
    <activeProfile>artifactory</activeProfile>  
  </activeProfiles>
</settings>

设置 Artifactory xml:

<?xml version="1.0" encoding="UTF-8"?>

<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"
          xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <localRepository>C:/EMA_ROOT/snapshotviews/repo</localRepository>     
  <mirrors>   
     <mirror> 
      <id>art_central</id> 
      <name>Artifactory Mirror of Central</name> 
      <url>http://maven/artifactory/libs-snapshot</url> 
      <mirrorOf>central</mirrorOf> 
    </mirror> 
    <mirror> 
      <id>art_all</id> 
      <name>Artifactory Mirror of Central</name> 
      <url>http://maven/artifactory/libs-snapshot</url> 
      <mirrorOf>*</mirrorOf> 
    </mirror> 
  </mirrors>
  <profiles>
    <profile>  
      <id>artifactory</id>  
      <repositories>  
        <repository>  
          <snapshots />  
          <id>snapshots</id>  
          <name>libs-snapshot</name>  
          <url>http://maven/artifactory/libs-snapshot</url>   
        </repository>  
      </repositories>  
      <pluginRepositories>  
        <pluginRepository>  
          <snapshots />  
          <id>snapshots</id>  
          <name>plugins-snapshot</name>  
          <url>http://maven/artifactory/plugins-snapshot</url>   
        </pluginRepository>  
      </pluginRepositories>  
    </profile>  
  </profiles>

  <activeProfiles>  
    <activeProfile>artifactory</activeProfile>  
  </activeProfiles>
</settings>

我已经成功 运行 你的例子。 我唯一需要更改的是将您的 Testing.java 放入任何包中,例如 package t;

如果你的 repo 有任何问题,如果你的 settings.xml 文件中没有任何奇怪的设置,请尝试。 https://maven.apache.org/settings.html。可能有一些代理集或类似的东西,这可能会改变您对项目的预期行为。

settings.xml 中的网址更改为 https://repo1.maven.org/maven2/

对我来说,唯一的解决方案是转到位于 ${user.home}/.m2/ 的本地 Maven 存储库并删除 jmh 包。

rm -Rf ${user.home}/.m2/repository/org/openjdk/jmh*

然后 IntelliJ 可以在我执行 cleaninstall 时再次下载这个包。