Issue
Wanted to start doing benchmark of methods that i will write from now onward, Had motivation from a long time and finally decided to do so from yesterday. But i have been struck with my setup process.
But when i run the command mvn clean install
, i get below error:
[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)
I thought that i must force update the repos, so i ran mvn -U clean install
, again no luck.
Did plenty of searches and went through N-number of SO threads, but still not able to figure out where i am going wrong.
When i just run my Testing.java class ,I get below message:
No matching benchmarks. Miss-spelled regexp?
Use EXTRA verbose mode to debug the pattern matching.
Process finished with exit code 1
I am confused that when maven is not able to find those JMH libs from central reps then why my code with all annotations are not showing red compilation error?? If the libs are imported correctly then why i am getting error that xx could not be downloaded when i run mvn clean install
from terminal?
After 2 hours of struggling, i thought to give up on POM.xml and tried to add jars manually, i downloaded , JMH annotation jar and JMH core jar and configured the paths manually. And guess what still no luck.
In case you wanna know what i am coding :
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();
}
}
My 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>
I would love a detailed solution, it would be helpful to those who stumbled upon this thread in future.
ref and tried:
- http://hg.openjdk.java.net/code-tools/jmh/file/004bc63876c5/jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_01_HelloWorld.java
- http://mail.openjdk.java.net/pipermail/jmh-dev/2013-July/000123.html
- https://hg.openjdk.java.net/code-tools/jmh/file/5984e353dca7/jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_01_HelloWorld.java
Ran the following command: mvn versions:display-dependency-updates
output:
[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] ------------------------------------------------------------------------
Edit:
With Command mvn -U clean install
, i forced to update repos and i got these downloads.
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)
This shows that i don't have any proxy problem, Now when i cliched any of the JMH link in browser i get a json response, example:
Link: http://maven/artifactory/libs-snapshot/org/openjdk/jmh/jmh-core/1.21/jmh-core-1.21.jar
Msg:
{
"errors" : [ {
"status" : 404,
"message" : "Could not find resource"
} ]
}
Settings 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>
Setting 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>
Solution
I have successfully run your example.
The only thing I had to change was to put your Testing.java
into any package for example package t;
If you have any problems with your repo, please try if you do not have any strange settings in your settings.xml
file. https://maven.apache.org/settings.html. There may be some proxing set or something like that, which may change your expected behaviour of your project.
Change URLs in settings.xml
to https://repo1.maven.org/maven2/
Answered By - Tomasz Białecki
Answer Checked By - Willingham (JavaFixing Volunteer)