From a118736661d17a964378dea7f34994317e119980 Mon Sep 17 00:00:00 2001 From: Peter Palaga Date: Wed, 13 Feb 2019 14:01:16 +0100 Subject: [PATCH] Fix #252 Add writeVersions parameter to AbstractDownloadLicensesMojo --- .../licenses-cleanLicDir.expected.xml | 6 +- ...s-config.xml => licenses-config-basic.xml} | 0 .../licenses-config-no-versions.xml | 17 ++++++ src/it/download-licenses-file-names/pom.xml | 9 +-- .../postbuild.groovy | 2 +- .../license/AbstractDownloadLicensesMojo.java | 17 +++++- .../license/utils/LicenseSummaryWriter.java | 15 +++-- .../license/utils/LicenseSummaryTest.java | 61 +++++++++++++------ 8 files changed, 89 insertions(+), 38 deletions(-) rename src/it/download-licenses-file-names/{licenses-config.xml => licenses-config-basic.xml} (100%) create mode 100644 src/it/download-licenses-file-names/licenses-config-no-versions.xml diff --git a/src/it/download-licenses-file-names/licenses-cleanLicDir.expected.xml b/src/it/download-licenses-file-names/licenses-cleanLicDir.expected.xml index a349ae0b1..12fc0bfaf 100644 --- a/src/it/download-licenses-file-names/licenses-cleanLicDir.expected.xml +++ b/src/it/download-licenses-file-names/licenses-cleanLicDir.expected.xml @@ -4,20 +4,18 @@ antlr antlr - 2.7.7 BSD License http://www.antlr.org/license.html repo - bsd-antlr.html + bsd-license-from-config.html com.sun.activation javax.activation - 1.2.0 CDDL/GPLv2+CE @@ -31,7 +29,6 @@ commons-beanutils commons-beanutils - 1.9.3 Apache License, Version 2.0 @@ -44,7 +41,6 @@ commons-collections commons-collections - 3.2.2 Apache License, Version 2.0 diff --git a/src/it/download-licenses-file-names/licenses-config.xml b/src/it/download-licenses-file-names/licenses-config-basic.xml similarity index 100% rename from src/it/download-licenses-file-names/licenses-config.xml rename to src/it/download-licenses-file-names/licenses-config-basic.xml diff --git a/src/it/download-licenses-file-names/licenses-config-no-versions.xml b/src/it/download-licenses-file-names/licenses-config-no-versions.xml new file mode 100644 index 000000000..70bc5f50a --- /dev/null +++ b/src/it/download-licenses-file-names/licenses-config-no-versions.xml @@ -0,0 +1,17 @@ + + + + + antlr + antlr + + + BSD License + http://www.antlr.org/license.html + repo + bsd-license-from-config.html + + + + + diff --git a/src/it/download-licenses-file-names/pom.xml b/src/it/download-licenses-file-names/pom.xml index 6f100212e..284b58dc1 100644 --- a/src/it/download-licenses-file-names/pom.xml +++ b/src/it/download-licenses-file-names/pom.xml @@ -77,7 +77,7 @@ ${project.build.directory}/basic/licenses ${project.build.directory}/basic/licenses.xml - ${basedir}/licenses-config.xml + ${basedir}/licenses-config-basic.xml xmlOutput true @@ -140,7 +140,7 @@ download-licenses - ${basedir}/src/license/licenses.xml + ${basedir}/licenses-config-no-versions.xml ${project.build.directory}/cleanLicDir/licenses ${project.build.directory}/cleanLicDir/licenses.xml ${project.build.directory}/cleanLicDir/licenses-errors.xml @@ -148,6 +148,7 @@ true xmlOutput true + false ^https?://github\.com/([^/]+)/([^/]+)/blob/(.*)$ @@ -156,10 +157,6 @@ - - sha1:074f8d6e91730b40875178666513014472888247 - \Qhttp://www.antlr.org/license.html\E - sha1:c27730aef98e1d50e937d808654daad00b258f90 \Qhttps://raw.githubusercontent.com/javaee/activation/master/LICENSE.txt\E diff --git a/src/it/download-licenses-file-names/postbuild.groovy b/src/it/download-licenses-file-names/postbuild.groovy index 4053cec51..fc70ca6ef 100644 --- a/src/it/download-licenses-file-names/postbuild.groovy +++ b/src/it/download-licenses-file-names/postbuild.groovy @@ -79,7 +79,7 @@ return { assert Files.exists(asl2) assert asl2.text.contains('Version 2.0, January 2004') - final Path bsdAntlr = outputBase.resolve('licenses/bsd-antlr.html') + final Path bsdAntlr = outputBase.resolve('licenses/bsd-license-from-config.html') assert Files.exists(bsdAntlr) assert bsdAntlr.text.contains('Copyright (c) 2012 Terence Parr and Sam Harwell') diff --git a/src/main/java/org/codehaus/mojo/license/AbstractDownloadLicensesMojo.java b/src/main/java/org/codehaus/mojo/license/AbstractDownloadLicensesMojo.java index 6dd1c7fb7..eb6487196 100644 --- a/src/main/java/org/codehaus/mojo/license/AbstractDownloadLicensesMojo.java +++ b/src/main/java/org/codehaus/mojo/license/AbstractDownloadLicensesMojo.java @@ -431,6 +431,19 @@ public abstract class AbstractDownloadLicensesMojo @Parameter private Map licenseUrlFileNames; + /** + * If {@code true}, {@link #licensesOutputFile} and {@link #licensesErrorsFile} will contain {@code } + * elements for each {@code }; otherwise the {@code } {@link #licensesOutputFile} and + * {@link #licensesErrorsFile} elements will not be appended under {@code } elements in + * + * Might be useful if you want to keep the {@link #licensesOutputFile} under source control and you do not want to + * see the changing dependency versions there. + * + * @since 1.18 + */ + @Parameter( property = "license.writeVersions", defaultValue = "true" ) + private boolean writeVersions; + // ---------------------------------------------------------------------- // Plexus Components // ---------------------------------------------------------------------- @@ -581,11 +594,11 @@ public void execute() List depProjectLicensesWithErrors = filterErrors( depProjectLicenses ); LicenseSummaryWriter.writeLicenseSummary( depProjectLicenses, licensesOutputFile, charset, - licensesOutputFileEol ); + licensesOutputFileEol, writeVersions ); if ( depProjectLicensesWithErrors != null && !depProjectLicensesWithErrors.isEmpty() ) { LicenseSummaryWriter.writeLicenseSummary( depProjectLicensesWithErrors, licensesErrorsFile, charset, - licensesOutputFileEol ); + licensesOutputFileEol, writeVersions ); } } catch ( Exception e ) diff --git a/src/main/java/org/codehaus/mojo/license/utils/LicenseSummaryWriter.java b/src/main/java/org/codehaus/mojo/license/utils/LicenseSummaryWriter.java index d3704ad7d..44bd7a864 100644 --- a/src/main/java/org/codehaus/mojo/license/utils/LicenseSummaryWriter.java +++ b/src/main/java/org/codehaus/mojo/license/utils/LicenseSummaryWriter.java @@ -54,7 +54,7 @@ public class LicenseSummaryWriter { public static void writeLicenseSummary( List dependencies, File outputFile, Charset charset, - Eol eol ) + Eol eol, boolean writeVersions ) throws ParserConfigurationException, TransformerException, IOException { DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance(); @@ -68,7 +68,7 @@ public static void writeLicenseSummary( List dependencies, F for ( ProjectLicenseInfo dep : dependencies ) { - dependenciesNode.appendChild( createDependencyNode( doc, dep ) ); + dependenciesNode.appendChild( createDependencyNode( doc, dep, writeVersions ) ); } // Prepare the output file File @@ -87,7 +87,7 @@ public static void writeLicenseSummary( List dependencies, F } } - public static Node createDependencyNode( Document doc, ProjectLicenseInfo dep ) + public static Node createDependencyNode( Document doc, ProjectLicenseInfo dep, boolean writeVersions ) { Node depNode = doc.createElement( "dependency" ); @@ -99,9 +99,12 @@ public static Node createDependencyNode( Document doc, ProjectLicenseInfo dep ) artifactIdNode.appendChild( doc.createTextNode( dep.getArtifactId() ) ); depNode.appendChild( artifactIdNode ); - Node versionNode = doc.createElement( "version" ); - versionNode.appendChild( doc.createTextNode( dep.getVersion() ) ); - depNode.appendChild( versionNode ); + if ( writeVersions ) + { + Node versionNode = doc.createElement( "version" ); + versionNode.appendChild( doc.createTextNode( dep.getVersion() ) ); + depNode.appendChild( versionNode ); + } Node licensesNode = doc.createElement( "licenses" ); if ( dep.getLicenses() == null || dep.getLicenses().size() == 0 ) diff --git a/src/test/java/org/codehaus/mojo/license/utils/LicenseSummaryTest.java b/src/test/java/org/codehaus/mojo/license/utils/LicenseSummaryTest.java index 739a6aa96..b3cef7cc4 100644 --- a/src/test/java/org/codehaus/mojo/license/utils/LicenseSummaryTest.java +++ b/src/test/java/org/codehaus/mojo/license/utils/LicenseSummaryTest.java @@ -107,26 +107,51 @@ public void testWriteReadLicenseSummary() licSummary.add( dep1 ); licSummary.add( dep2 ); - File licenseSummaryFile = File.createTempFile( "licSummary", "tmp" ); - // File licenseSummaryFile = new File( "src/test/resources/license-summary-test-2.xml" ); - LicenseSummaryWriter.writeLicenseSummary( licSummary, licenseSummaryFile, StandardCharsets.UTF_8, Eol.LF ); + { + File licenseSummaryFile = File.createTempFile( "licSummary", "tmp" ); + LicenseSummaryWriter.writeLicenseSummary( licSummary, licenseSummaryFile, StandardCharsets.UTF_8, Eol.LF, + true ); - Assert.assertTrue( licenseSummaryFile.exists() ); - FileInputStream fis = new FileInputStream( licenseSummaryFile ); - List list = LicenseSummaryReader.parseLicenseSummary( fis ); - fis.close(); - ProjectLicenseInfo dep = list.get( 0 ); - Assert.assertEquals( "org.test", dep.getGroupId() ); - Assert.assertEquals( "test1", dep.getArtifactId() ); - Assert.assertEquals( "1.0", dep.getVersion() ); + Assert.assertTrue( licenseSummaryFile.exists() ); + FileInputStream fis = new FileInputStream( licenseSummaryFile ); + List list = LicenseSummaryReader.parseLicenseSummary( fis ); + fis.close(); + ProjectLicenseInfo dep = list.get( 0 ); + Assert.assertEquals( "org.test", dep.getGroupId() ); + Assert.assertEquals( "test1", dep.getArtifactId() ); + Assert.assertEquals( "1.0", dep.getVersion() ); - List licenses = dep.getLicenses(); - Assert.assertEquals( 1, licenses.size() ); - ProjectLicense lic0 = dep.getLicenses().get(0); - Assert.assertEquals( "lgpl", lic0.getName() ); - Assert.assertEquals( "http://www.gnu.org/licenses/lgpl-3.0.txt", lic0.getUrl() ); - Assert.assertEquals( "lgpl-3.0.txt", lic0.getFile() ); - Assert.assertEquals( "lgpl version 3.0", lic0.getComments() ); + List licenses = dep.getLicenses(); + Assert.assertEquals( 1, licenses.size() ); + ProjectLicense lic0 = dep.getLicenses().get(0); + Assert.assertEquals( "lgpl", lic0.getName() ); + Assert.assertEquals( "http://www.gnu.org/licenses/lgpl-3.0.txt", lic0.getUrl() ); + Assert.assertEquals( "lgpl-3.0.txt", lic0.getFile() ); + Assert.assertEquals( "lgpl version 3.0", lic0.getComments() ); + } + + { + File licenseSummaryFile = File.createTempFile( "licSummaryNoVersion", "tmp" ); + LicenseSummaryWriter.writeLicenseSummary( licSummary, licenseSummaryFile, StandardCharsets.UTF_8, Eol.LF, + false ); + + Assert.assertTrue( licenseSummaryFile.exists() ); + FileInputStream fis = new FileInputStream( licenseSummaryFile ); + List list = LicenseSummaryReader.parseLicenseSummary( fis ); + fis.close(); + ProjectLicenseInfo dep = list.get( 0 ); + Assert.assertEquals( "org.test", dep.getGroupId() ); + Assert.assertEquals( "test1", dep.getArtifactId() ); + Assert.assertNull( dep.getVersion() ); + + List licenses = dep.getLicenses(); + Assert.assertEquals( 1, licenses.size() ); + ProjectLicense lic0 = dep.getLicenses().get(0); + Assert.assertEquals( "lgpl", lic0.getName() ); + Assert.assertEquals( "http://www.gnu.org/licenses/lgpl-3.0.txt", lic0.getUrl() ); + Assert.assertEquals( "lgpl-3.0.txt", lic0.getFile() ); + Assert.assertEquals( "lgpl version 3.0", lic0.getComments() ); + } } }