Clover maven plugin - maven

After I replace version 4.1.2 clover-maven-plugin instead of version 3.1.3 maven-clover2-plugin, and then i got an error as below:
But i am confused with "Renewals and upgrades of Clover are no longer available effective April 11, 2017. If you require an upgrade to a different license tier we recommend switching to the open-source version. Open-source Clover does not require a license tier and offers unlimited usage."
https://www.atlassian.com/licensing/clover#-4
Can someone help have look?

Atlassian has open-sourced Clover on April 11, 2017. It means that all binaries published before this date are the commercial ones and thus they require a license key. It applies to all Clover versions up to 4.1.2. Please note that historically the Maven Clover Plugin has been renamed, so its artifactId is:
maven-clover2-plugin till version 4.0.6
clover-maven-plugin for versions 4.1.1-4.1.2
In order to use the open-source version of Clover, you have to build it from sources (Atlassian published source code only and does not host any open-source binaries at the moment).
However, as Clover-lover :-) I've prepared binaries - they're named OpenClover. It's a fork based on Atlassian Clover sources. See the website: http://openclover.org. The Maven plugin is org.openclover:clover-maven-plugin, as Haven Lin wrote.

Related

Where is Apache Commons Email 1.6-SNAPSHOT?

The project's homepage at (https://commons.apache.org/proper/commons-email/) has 1.6-SNAPSHOT as the latest version, published on February 26 2018. Their dependency information page (https://commons.apache.org/proper/commons-email/dependency-info.html) also states that it should be available in Maven central. But when I tried using the exact dependency configuration they gave (compile 'org.apache.commons:commons-email:1.6-SNAPSHOT'), Gradle doesn't find the artifact. Searching the Maven Central repository gives 1.5 as the latest version: https://mvnrepository.com/artifact/org.apache.commons/commons-email. Even going to Apache Commons Email downloads page still only leads you to 1.5. I can't seem to find the source for 1.6 anywhere, and all searches only point to documentation for 1.6. Anyone know what's going on here? I'd understand if this was just released and it wasn't pushed to the repositories yet, but it's been months...
The version listed on the projects home page is not the version of the jars to download, but the version of the homepage (which is built by Maven).
You should use "the current release 1.5".

How to manage Tycho / EAP versioning correctly

I have an Eclipse 4 project that is built using Tycho (0.19.0) and Maven (3.0-5)
During development of a version, say 1.0.0, the artifacts are configured with version 1.0.0-SNAPSHOT, and 1.0.0.qualifier depending on the files. When I want to release the version, I use the tycho-versions:set-version goal to change from 1.0.0-SNAPSHOT to 1.0.0.
I then build and copy the product to a remote share that publishes an update site so that older versions can be upgraded automatically at launch time.
Since I have some beta testers, I use more that one update site. One contains the stable versions, and my beta testers have one more update site to check at startup. The other one is actually an update site for snapshots that I have published, so those are not released versions of the product.
What I am experiencing seems strange: When the 1.0.0 application starts, it finds the previous snapshot (versioned 1.0.0.201312191455), thinks that those artifacts are more recent and updates itself back to an older version.
I'm guessing that Eclipse's version conventions state that x.y.z is older than x.y.z.u. Is that correct?
If so, then why does the tycho versions plugin remove the qualifier when a versions changes from snapshot to "release"? Doing so seems to make the artifacts look older than any of the snapshots. What's the correct way to handle this situation?
The answer was given in the tycho mailing list some time ago:
http://dev.eclipse.org/mhonarc/lists/tycho-user/msg01001.html
The details:
OSGi does not have a notion of "snapshot" versions, all versions are
treated the same and 1.0.0.qualifier is indeed considered to be newer
than 1.0.0.
There are two versioning schemes that result is reasonable behaviour
both for OSGi and Maven.
Use the same four part version (eg., 1.0.0.20111112-0735) for both Maven
and OSGi. This results in slightly odd version jump when going from
snapshots to releases on the maven side, i.e. 1.0.0-SNAPSHOT goes to
1.0.0.20111112-0735, but everything works otherwise.
Use even/odd convention to version snapshots and releases, i.e.
1.0.1-SNAPSHOT/1.0.1.qualifier is released as 1.0.2/1.0.2.
I think it is also possible to decouple maven and osgi versions of
released artifacts, i.e. use 1.0.0 for maven and 1.0.0.20111112-0735 for
OSGi, but personally I find this confusing and would not recommend. And
I am not sure if Tycho will allow this in the future.
--
Regards,
Igor

Using Analysis Tools on SonarQube not containing in the Java Ecosystem Plugin

I'm setting up a project environment for a bigger Java project and plan to use SonarQube with PMD, Findbugs and JaCoco. Theses tools are already included in SonarQube with the Java Ecosystem Plugins, but not all the new versions are supported.
In specific, PMD has only support for version 4.3 (http://docs.codehaus.org/display/SONAR/PMD+Plugin), which is 2 years old now. Is there any possibility to install/use the newest version of PMD with SonarQube?
The answer is no.
For your information, you shouldn't need to use PMD anymore. See http://www.sonarqube.org/already-158-checkstyle-and-pmd-rules-deprecated-by-sonarqube-java-rules/.
You can also follow and vote for http://jira.codehaus.org/browse/SONARJAVA-26

Does Sonar 3.7.1 still support the fb-contrib plugin?

I'm looking into upgrading Sonar, from 3.2.1 to 3.7.1. In our current system, we have the fb-contrib plugin installed and many of its violations enabled. However, in the latest version, I do not see it listed in Update Center -> Available Plugins. I've looked at the release notes for each release and I do not seen any mention of fb-contrib. I've looked at the plugins homepage and it isn't clear. Does anyone know if it is still supported?
Thanks.
It's not compatible with version 3.7. See http://docs.codehaus.org/display/SONAR/Plugin+version+matrix

Are core maven plugins on the same release cycle as maven itself?

In a variety of places online I have seen it discussed that for a maven build to be reproducible it is important to explicitly specify the version numbers of all the plugins used so that a newer plugin does not break the build. The recommend approach seemed to be to use the enforcer plugin. Below is a copy and pasted settings I found online.
<execution>
<id>enforce-plugin-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requirePluginVersions>
<message>Best Practice is to always define plugin versions!</message>
<banLatest>true</banLatest>
<banRelease>true</banRelease>
<banSnapshots>true</banSnapshots>
<phases>clean,deploy,site</phases>
<additionalPlugins>
<additionalPlugin>org.apache.maven.plugins:maven-eclipse-plugin</additionalPlugin>
<additionalPlugin>org.apache.maven.plugins:maven-reactor-plugin</additionalPlugin>
</additionalPlugins>
<unCheckedPluginList>org.apache.maven.plugins:maven-enforcer-plugin,org.apache.maven.plugins:maven-idea-plugin</unCheckedPluginList>
</requirePluginVersions>
</rules>
</configuration>
</execution>
When I run the pom I get the following error from the enforcer plugin.
[INFO] --- maven-enforcer-plugin:1.1.1:enforce (enforce-plugin-versions) # seedling ---
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequirePluginVersions failed with message:
Some plugins are missing valid versions:(LATEST RELEASE SNAPSHOT are not allowed )
org.apache.maven.plugins:maven-clean-plugin. The version currently in use is 2.4.1
org.apache.maven.plugins:maven-deploy-plugin. The version currently in use is 2.7
org.apache.maven.plugins:maven-install-plugin. The version currently in use is 2.3.1
org.apache.maven.plugins:maven-site-plugin. The version currently in use is 3.0
org.apache.maven.plugins:maven-reactor-plugin. The version currently in use is 1.0
org.apache.maven.plugins:maven-eclipse-plugin. The version currently in use is 2.9
Best Practice is to always define plugin versions!
It seems to me that some plugins are such as maven-clean-plugin,maven-install-plugin,maven-reactor-plugin are a core central part of maven, and i should have the versions of these "core" plugins tied to the version of maven that I am using.
My questions:
Are plugin versions on the same release cycle as a maven itself?
Is there a group of core maven plugins that comprise a maven release? If yes, how to get a list of such plugins for a maven release?
When I see a maven release such as 3.0.4 is that version inclusive of some core plugins, or will it always get the latest plugins such as reactor that were released after maven 3.0.4 were released?
Is there a way to say to maven use plugins that were released at the time that 3.0.4 was released?
How is compatibility between different plugin versions indicated, is there some convention that is universally followed by plugins such as all minor 2.x are all compatible with each other but 3.x is not compatible with 2.x?
Is the practice of specifying plugin version numbers really a best pest practice or just overkill?
Maven binds some plugin to its lifecycle phases, e.g. the maven-compiler-plugin to the compile phase, the maven-install-plugin to the install phase and so on. These are the plugins that you mean by "a core central part of maven". However, these plugins have an individual release cycle. For example, take a look at the maven-deploy-plugin which is bound to maven's deploy lifecycle phase. The latest release (2.7) was in October 2011 whereas the latest Maven release (3.0.4) was in January 2012. Another example is the maven-compiler-plugin whose latest release was in June 2012, half a year after the release of Maven 3.0.4.
To answer your questions in particular:
No, they aren't. Each plugin has its own release cycle. See the examples above.
There are various plugins that are bound to Maven's package-specific lifecycle phases. You can consider these as "core maven plugins". Take a look at the maven book to get a complete list.
If you don't specify the plugin versions in your POM files, maven will use the latest release of each used plugin.
No. If this is a requirement for you, you can find the release dates of the plugins on http://search.maven.org and compare them to the latest release of Maven. But this shouldn't be necessary, if you specify the version of each used plugin in your POM file and maven produces the corrects artifacts for you.
There are no compatibility problems (at least no problems that I know of) between different maven plugins. For different version of the same plugin, you have to try it and see if your specific project works with a new version of a plugin.
If you want reproducible builds, it's a must.
Here the answers to the list of questions:
No
No. Maven itself has a small kernel but there are no plugins in the kernel. All plugins will be downloaded during the run if they needed. In Maven 2 there had been some parts of maven which are released with Maven itself (parts of the site generation) which has been changed with Maven 3.
No a Maven release includes a super pom which contains the definitions of some plugins versions etc. but only via the super pom.
No you can't define the time of a release only via the versions.
The different plugins are maintained by different communities / people and they have different opinions of versions and their relationship to the maven release. Usually the sites of the appropriate plugins will document that if it's documented (for example maven-site-plugin).
Yes it is and works for different Maven releases without any problems.

Resources