I'm trying to use Takari SmartBuilder in a Maven project under Jenkins.
After testing it locally everything was working perfectly, but in Jenkins the Takari extension is not loaded.
After some investigation I found that maven's "-B" option order was preventing the projects extensions to load.
Not loading extensions:
mvn -B -f <project-name>/pom.xml clean install -X
Loading extensions:
mvn -f <project-name>/pom.xml -B clean install -X
Extensions are set in the root project folder under .mvn/extensions.xml
<?xml version="1.0" encoding="UTF-8"?>
<extensions>
<extension>
<groupId>io.takari.maven</groupId>
<artifactId>takari-smart-builder</artifactId>
<version>0.4.0</version>
</extension>
<extension>
<groupId>io.takari.aether</groupId>
<artifactId>takari-concurrent-localrepo</artifactId>
<version>0.0.7</version>
</extension>
<extension>
<groupId>io.takari.aether</groupId>
<artifactId>aether-connector-okhttp</artifactId>
<version>1.0.1-alpha</version>
</extension>
</extensions>
Versions:
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00)
Maven home: /opt/maven-versions/apache-maven-3.3.9
Java version: 1.7.0_65, vendor: Oracle Corporation
Java home: /opt/java-versions/jdk1.7.0_65/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.13.1.el7.x86_64", arch: "amd64", family: "unix"
I believe I am facing a similar issue.
see https://issues.jenkins.io/browse/JENKINS-70357
It seems that the Jenkins Maven Integration Plugin is injecting the -B parameter unconditionally and for a good reason I am afraid.
However, either with or without interactive mode enabled, the extensions are loaded successfully (from lib/ext though), which proves that interactive mode does not control extensions in any way.
Also, using MavenJob offers some substantial advantages, like triggering downstream builds etc., which cannot be used with FreeStyleJob, making use of MavenJob necessary for certain development environments.
Related
I have a Java project with Maven dependency management. I copied it to another workstation and imported to IntelliJ IDEA. Dependencies from pom.xml file are not resolved. Maven Integration plugin is enabled, but Maven's Reimport function has no effect.
settings.xml file in .m2 folder:
<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
https://maven.apache.org/xsd/settings-1.0.0.xsd">
</settings>
Import Maven projects automatically option is set to on. I use JDK version 1.8.0_171 and Maven 3.5.4, which I set path manually in IDE.
IDE information:
IntelliJ IDEA 2018.1.5 (Community Edition)
Build #IC-181.5281.24, built on June 12, 2018
JRE: 1.8.0_152-release-1136-b39 x86
JVM: OpenJDK Server VM by JetBrains s.r.o
Windows 10 10.0
I copied repository folder under .m2 folder from my computer to second workstation and after that Maven dependencies are resolved.
I have a Nexus 3 which I deploy some artifacts from Jenkins with "mvn deploy". I have A LOT of modules 500+. The build looks kind of like this:
mvn clean package -DskipTests -DskipITs -T C1
mvn install -DskipTests -DskipITs -T C1
mvn deploy --quiet -DskipTests -DskipITs -Dmaven.validate.skip=true -Dmaven.compile.skip=true -Dmaven.test.skip=true -Dmaven.package.skip=true -Dmaven.integration-test.skip=true -Dmaven.verify.skip=true -T C1
The problem is that from time to time my artifacts have a timestamp while the metadata has a different timestamp. 1 second difference usually.
This is what I see in nexus at https://mynexus.com/repository/snapshots/com/company/my-artifact/1.0.0-SNAPSHOT/maven-metadata.xml
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
<groupId>com.company</groupId>
<artifactId>my-artifact</artifactId>
<version>1.0.0-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20170613.140447</timestamp>
<buildNumber>1</buildNumber>
</snapshot>
<lastUpdated>20170613140447</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>war</extension>
<value>1.0.0-20170613.140447-1</value>
<updated>20170613140447</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>1.0.0-20170613.140447-1</value>
<updated>20170613140447</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
</metadata>
Judging the maven-metadata.xml, the artifact URL should be this:
https://mynexus.com/repository/snapshots/com/company/my-artifact/1.0.0-SNAPSHOT/my-artifact/1.0.0-20170613.140447-1.war
But it is not. Instead, the artifact is at this location:
https://mynexus.com/repository/snapshots/com/company/my-artifact/1.0.0-SNAPSHOT/my-artifact/1.0.0-20170613.140446-1.war
mvn --version
OpenJDK 64-Bit Server VM
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T21:39:06+02:00)
Maven home: /usr/local/apache-maven
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-64-generic", arch: "amd64", family: "unix"
The version of maven-deploy-plugin is 2.8.2
What am I doing wrong? How can I fix this?
Thank you!
This is a bug in Maven 3.5.0 and and will be resolved whenever 3.5.1 is released.
The original bug-report targed the deploy-plugin (https://issues.apache.org/jira/browse/MDEPLOY-221) however it's an issue with maven core: https://issues.apache.org/jira/browse/MNG-6240.
We hit the same issue at my work and after some digging and searching on mavens issue tracker I found the above links. I would suggest downgrading while waiting for 3.5.1 to come out.
In src/test/resources/log4j.properties I've configured log4j to not log anything.
When I run a single test, i.e. mvn clean test -Dtest=MyTestClass, this log4j properties is heeded. However, when I run all the tests, i.e. mvn clean test, this logging conf is ignored. How can this be?!!
I think I'm going crazy but hope there's a logical explanation :-)
Any help is highly appreciated.
$ mvn -version
Apache Maven 3.3.9
Maven home: /usr/share/maven
Java version: 1.8.0_60, vendor: Oracle Corporation
Java home: /usr/lib/jvm/jdk-8-oracle-x64/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "4.6.0-1-amd64", arch: "amd64", family: "unix"
The sure fire version is 2.19.1:
[INFO] --- maven-surefire-plugin:2.19.1:test (default-test) # common-util ---
The src/test/resources/log4j.properties:
log4j.rootLogger=OFF
POM fragments related to resources:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>ISO-8859-1</encoding>
</configuration>
</plugin>
One of the 52 test classes under src/test/java had the following lines in its #Before method:
import org.apache.log4j.BasicConfigurator;
#Before
public void setUp() {
BasicConfigurator.resetConfiguration();
BasicConfigurator.configure();
}
For some reason, what must be a bug as far as I can tell, these calls to log4j affects all other junit classes too. Removing these lines made mvn test got the same logging behaviour as running mvn test -Dtest=MyTestClass, i.e. what was defined in src/test/resources/log4j.properties.
How can I configure the Minify Maven Plugin plugin to work with Maven 2.2.1 while also using the Google Closure Compiler?
According to this issue, Version 1.7.1 should work with that particular version of Maven, but on minification, it is throwing this warning: "[WARNING] JavaScript engine not supported". The concatenation of the bundles works as expected. I am upgrading from version 1.2.4 to the utilize the the Closure Compiler. I need Closure Compiler as YUI has some unresolved bugs with certain ES2015 syntax. We won't be upgrading to Maven 3 for a while.
workstation details:
java version "1.8.0_60"
Apache Maven 2.2.1 (r801777; 2009-08-06 12:16:01-0700)
Java version: 1.8.0_60
OS name: "mac os x" version: "10.10.4" arch: "x86_64" Family: "mac"
My configuration:
<plugin>
<groupId>com.samaxes.maven</groupId>
<artifactId>minify-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
<execution>
<id>someBundle</id>
<phase>process-classes</phase>
<configuration>
<webappSourceDir>web/src/static${static.asset.basedir}</webappSourceDir>
<webappTargetDir>web/target/minify</webappTargetDir>
<jsSourceFiles>
<param>libs/somelib.js</param>
<param>libs/anotherlib.js</param>
</jsSourceFiles>
<jsFinalFile>bundle.js</jsFinalFile>
<jsEngine>CLOSURE</jsEngine>
</configuration>
<goals>
<goal>minify</goal>
</goals>
</execution>
</executions>
</plugin>
This question was pretty obscure so I'll answer it by posting my solution. I was fearful that upgrading to Maven 3 would open up a can of worms, but it didn't. As a matter of fact, it just worked after changing the location of the Maven home directory (in IntelliJ and in the zsh profile - M2_HOME) and the location of our Maven Repository (which was not in the default location). I build with both IntelliJ and by command line so both locations needed to be updated.
New home directory location (installed with Homebrew):
/usr/local/Cellar/maven/3.3.3/libexec
Local Maven repository setting updated in this file:
/usr/local/Cellar/maven/3.3.3/libexec/conf/settings.xml
Update this value:
<localRepository>/path/to/local/maven/repository/</localRepository>
I create a simple maven project in eclipse(indigo), it reports an error:
Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.4.3 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.4.3
I found maven-resources-plugin:2.5 in local repo.
I don't understand why my project needs 2.4.3 but not 2.5?
mvn -v:
Apache Maven 3.0.4 (r1232337; 2012-01-17 16:44:56+0800)
Maven home: D:\Program Files\maven-3.0
Java version: 1.6.0_31, vendor: Sun Microsystems Inc.
Java home: D:\Program Files\Java\jdk1.6.0_31\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows xp", version: "5.1", arch: "x86", family: "windows"
I solved it,
just create src/main/java, src/main/resources, src/test/java, src/test/resources
The maven-resources-plugin will disappear.