r1785 - in trunk: . src/main/java/org/nuiton/license/plugin src/site/apt src/site/fr/apt
Author: tchemit Date: 2010-06-26 13:14:41 +0200 (Sat, 26 Jun 2010) New Revision: 1785 Url: http://nuiton.org/repositories/revision/maven-license-plugin/1785 Log: Evolution #718: Add merge licenses possible on THIRD-PARTY Modified: trunk/pom.xml trunk/src/main/java/org/nuiton/license/plugin/AbstractAddThirdPartyMojo.java trunk/src/main/java/org/nuiton/license/plugin/LicenseMap.java trunk/src/site/apt/usage.apt trunk/src/site/fr/apt/usage.apt Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2010-06-26 10:13:05 UTC (rev 1784) +++ trunk/pom.xml 2010-06-26 11:14:41 UTC (rev 1785) @@ -339,7 +339,7 @@ <!-- documentation is in english then french --> <locales>en,fr</locales> - <javadoc.version>2.6</javadoc.version> + <!--<javadoc.version>2.7</javadoc.version>--> </properties> @@ -432,7 +432,7 @@ <localRepositoryPath>${basedir}/target/local-repo</localRepositoryPath> <settingsFile>src/it/settings.xml</settingsFile> <cloneProjectsTo>${project.build.directory}/its</cloneProjectsTo> - <!--<debug>true</debug>--> + <debug>true</debug> </configuration> <executions> <execution> Modified: trunk/src/main/java/org/nuiton/license/plugin/AbstractAddThirdPartyMojo.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/AbstractAddThirdPartyMojo.java 2010-06-26 10:13:05 UTC (rev 1784) +++ trunk/src/main/java/org/nuiton/license/plugin/AbstractAddThirdPartyMojo.java 2010-06-26 11:14:41 UTC (rev 1785) @@ -86,11 +86,29 @@ * The file where to fill the license for dependencies with unknwon license. * * @parameter expression="${license.missingFile}" default-value="src/license/THIRD-PARTY.properties" - * @since 1.0.0 + * @since 2.3 */ protected File missingFile; /** + * To merge licenses in final file. + * <p/> + * Each entry represents a merge (first license is main license to keep), licenses are separated by {@code |}. + * <p/> + * Example : + * <p/> + * <pre> + * <licenseMerges> + * <licenseMerge>The Apache Software License|Version 2.0,Apache License, Version 2.0</licenseMerge> + * </licenseMerges> + * </pre> + * + * @parameter + * @since 2.3 + */ + protected List<String> licenseMerges; + + /** * The path of the bundled third party file to produce when * {@link #generateBundle} is on. * <p/> @@ -114,7 +132,7 @@ * Un flag pour forcer la generation. * * @parameter expression="${license.force}" default-value="false" - * @since 1.0.0 + * @since 2.3 */ protected boolean force; @@ -138,7 +156,6 @@ */ protected boolean groupByLicense; - private LicenseMap licenseMap; private SortedSet<MavenProject> unsafeDependencies; @@ -208,22 +225,31 @@ } licenseMap = createLicenseMap(); - licenseMap.setLog(log); unsafeDependencies = licenseMap.getUnsafeDependencies(); - if (CollectionUtils.isEmpty(unsafeDependencies) || - !isUseMissingFile() || - !isDoGenerate()) { + if (!CollectionUtils.isEmpty(unsafeDependencies) && + isUseMissingFile() && + isDoGenerate()) { - // no unsafe dependencies - // or user does not ask to generate missing file - // so no more thing to do - return; + // load unsafeMapping + unsafeMappings = createUnsafeMapping(); } - // load unsafeMapping - unsafeMappings = createUnsafeMapping(); + if (!CollectionUtils.isEmpty(licenseMerges)) { + + // merge licenses in license map + + for (String merge : licenseMerges) { + merge = merge.trim(); + if (isVerbose()) { + getLog().info("Will merge [" + merge + "]"); + } + String[] split = merge.split("\\|"); + + licenseMap.mergeLicenses(split); + } + } } protected boolean checkUnsafeDependencies() { Modified: trunk/src/main/java/org/nuiton/license/plugin/LicenseMap.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/LicenseMap.java 2010-06-26 10:13:05 UTC (rev 1784) +++ trunk/src/main/java/org/nuiton/license/plugin/LicenseMap.java 2010-06-26 11:14:41 UTC (rev 1785) @@ -110,11 +110,15 @@ SortedSet<MavenProject> unsafeDependencies = get(getUnknownLicenseMessage()); if (log.isDebugEnabled()) { - log.debug("There is " + unsafeDependencies.size() + " dependencies with no license from poms : "); - for (MavenProject dep : unsafeDependencies) { + if (CollectionUtils.isEmpty(unsafeDependencies)) { + log.debug("There is no dependency with no license from poms."); + } else { + log.debug("There is " + unsafeDependencies.size() + " dependencies with no license from poms : "); + for (MavenProject dep : unsafeDependencies) { - // no license found for the dependency - log.debug(" - " + AbstractAddThirdPartyMojo.getArtifactId(dep.getArtifact())); + // no license found for the dependency + log.debug(" - " + AbstractAddThirdPartyMojo.getArtifactId(dep.getArtifact())); + } } } @@ -131,8 +135,8 @@ // there is some unsafe dependencies if (missingFile.exists()) { - getLog().info("Load missing file "+missingFile); - + getLog().info("Load missing file " + missingFile); + // load the missing file unsafeMappings.load(missingFile); } @@ -244,4 +248,30 @@ } return projectComparator; } + + public void mergeLicenses(String... licenses) { + if (licenses.length == 0) { + return; + } + + String mainLicense = licenses[0].trim(); + SortedSet<MavenProject> mainSet = get(mainLicense); + if (mainSet == null) { + getLog().warn("No license [" + mainLicense + "] found, can not merge."); + return; + } + int size = licenses.length; + for (int i = 1; i < size; i++) { + String license = licenses[i].trim(); + SortedSet<MavenProject> set = get(license); + if (set == null) { + getLog().warn("No license [" + license + "] found, skip this merge."); + continue; + } + getLog().info("Merge license [" + license + "] (" + set.size() + " depedencies)."); + mainSet.addAll(set); + set.clear(); + remove(license); + } + } } Modified: trunk/src/site/apt/usage.apt =================================================================== --- trunk/src/site/apt/usage.apt 2010-06-26 10:13:05 UTC (rev 1784) +++ trunk/src/site/apt/usage.apt 2010-06-26 11:14:41 UTC (rev 1785) @@ -93,9 +93,11 @@ Once the file filled, just relaunch the goal to integrate your modifications in the generated <<THIRD-PARTY>> file. - Here is a <<THIRD-PARTY>> file with unamed licenses : + Here is a <<THIRD-PARTY>> file with unamed licenses launched by -------------------------------------------------------------------------------- +mvn license:add-third-party -DuseMissingFile + List of 18 third-party dependencies. (Apache License, Version 2.0) JHLabs Image Processing Filters (com.jhlabs:filters:2.0.235 - http://www.jhlabs.com/ip/index.html) @@ -142,7 +144,7 @@ opensymphony--ognl--2.6.11= -------------------------------------------------------------------------------- - Fills the file : + Fills the file : -------------------------------------------------------------------------------- # Generated by org.nuiton.license.plugin.AddThirdPartyMojo @@ -164,7 +166,7 @@ commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0 javax.help--javahelp--2.0.02=Sun Microsystems, Inc. Binary Code License Agreement for the JDK 5.0 opensymphony--ognl--2.6.11=The OpenSymphony Software License 1.1 - -------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- Finally, relaunch the goal to obtain new generated <<THIRD-PARTY.txt>> file : @@ -193,15 +195,16 @@ ** Merge licenses. - to merge licenses added in <<THIRd-PARTY>> file, you have to add this configuration : + to merge licenses added in <<THIRd-PARTY>> file, you have to add a <<licenseMerges>> + to the plugin this configuration : ------------------------------------------------------------------------------- <configuration> - <mergeLicenses> - <mergeLicense> + <licenseMerges> + <licenseMerge> Lesser General Public License (LGPL) v 3.0|Lesser General Public License (LGPL) - </mergeLicense> - </mergeLicenses> + </licenseMerge> + </licenseMerges> </configuration> ------------------------------------------------------------------------------- Modified: trunk/src/site/fr/apt/usage.apt =================================================================== --- trunk/src/site/fr/apt/usage.apt 2010-06-26 10:13:05 UTC (rev 1784) +++ trunk/src/site/fr/apt/usage.apt 2010-06-26 11:14:41 UTC (rev 1785) @@ -99,9 +99,11 @@ THIRD-PARTY généré intègrera les licenses complétées. Voici un fichier <<THIRD-PARTY.properties>> contenant des dépendances sans license - généré + généré en lançant la commande : -------------------------------------------------------------------------------- +mvn license:add-third-party -DuseMissingFile + List of 18 third-party dependencies. (Apache License, Version 2.0) JHLabs Image Processing Filters (com.jhlabs:filters:2.0.235 - http://www.jhlabs.com/ip/index.html) @@ -148,7 +150,7 @@ opensymphony--ognl--2.6.11= -------------------------------------------------------------------------------- - On renseigne le fichier : + On renseigne le fichier : -------------------------------------------------------------------------------- # Generated by org.nuiton.license.plugin.AddThirdPartyMojo @@ -170,7 +172,7 @@ commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0 javax.help--javahelp--2.0.02=Sun Microsystems, Inc. Binary Code License Agreement for the JDK 5.0 opensymphony--ognl--2.6.11=The OpenSymphony Software License 1.1 - -------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- En relançant le goal on obtient le nouveau fichier <<THIRD-PARTY.txt>> suivant : @@ -200,15 +202,15 @@ ** Fusionner les licenses. Pour fusionner des licenses dans le fichier THIRd-PARTY, il faut utiliser - la configuration <<mergeLicenses>>, comme dans l'exemple suivant : + la configuration <<licenseMerges>>, comme dans l'exemple suivant : ------------------------------------------------------------------------------- <configuration> - <mergeLicenses> - <mergeLicense> + <licenseMerges> + <licenseMerge> Lesser General Public License (LGPL) v 3.0|Lesser General Public License (LGPL) - </mergeLicense> - </mergeLicenses> + </licenseMerge> + </licenseMerges> </configuration> -------------------------------------------------------------------------------
participants (1)
-
tchemit@users.nuiton.org