Author: tchemit Date: 2010-06-25 15:30:21 +0200 (Fri, 25 Jun 2010) New Revision: 1778 Url: http://nuiton.org/repositories/revision/maven-license-plugin/1778 Log: finalize the two add-third-party goals Modified: trunk/src/main/java/org/nuiton/license/plugin/AbstractAddThirdPartyMojo.java trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyMojo.java trunk/src/main/java/org/nuiton/license/plugin/AggregatorAddThirdPartyMojo.java trunk/src/main/java/org/nuiton/license/plugin/LicenseMap.java Modified: trunk/src/main/java/org/nuiton/license/plugin/AbstractAddThirdPartyMojo.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/AbstractAddThirdPartyMojo.java 2010-06-25 11:51:13 UTC (rev 1777) +++ trunk/src/main/java/org/nuiton/license/plugin/AbstractAddThirdPartyMojo.java 2010-06-25 13:30:21 UTC (rev 1778) @@ -36,15 +36,19 @@ import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.SortedMap; import java.util.SortedSet; import java.util.TreeMap; /** - * Le goal pour copier le fichier THIRD-PARTY.txt (contenant les licenses de - * toutes les dependances du projet) dans le classpath (et le generer s'il - * n'existe pas). + * Goal to generate the THIRD-PARTY.txt file which resumes all dependencies with + * their licenses. + * <p/> + * It also add it in class-path. * * @author tchemit <chemit@codelutin.com> * @since 2.3 @@ -73,10 +77,10 @@ /** * A flag to use the missing licenses file to consolidate the THID-PARTY file. * - * @parameter expression="${license.useMissingfile}" default-value="false" + * @parameter expression="${license.useMissingFile}" default-value="false" * @since 2.3 */ - protected boolean useMissingfile; + protected boolean useMissingFile; /** * The file where to fill the license for dependencies with unknwon license. @@ -107,6 +111,14 @@ protected boolean generateBundle; /** + * Un flag pour forcer la generation. + * + * @parameter expression="${license.force}" default-value="false" + * @since 1.0.0 + */ + protected boolean force; + + /** * A flag to fail the build if at least one dependency was detected without a license. * * @parameter expression="${license.failIfWarning}" default-value="false" @@ -135,6 +147,10 @@ private SortedProperties unsafeMappings; + private boolean doGenerate; + + private boolean doGenerateBundle; + public static final String NO_DEPENDENCIES_MESSAGE = "the project has no dependencies."; private static SortedMap<String, MavenProject> artifactCache; @@ -151,6 +167,17 @@ protected abstract SortedProperties createUnsafeMapping() throws ProjectBuildingException, IOException; @Override + protected boolean checkSkip() { + if (!isDoGenerate() && + !isDoGenerateBundle()) { + + getLog().info("All files are up to date, skip goal execution."); + return false; + } + return super.checkSkip(); + } + + @Override protected void init() throws Exception { Log log = getLog(); @@ -165,12 +192,31 @@ setThirdPartyFile(file); + setDoGenerate(isForce() || !file.exists() || !isFileNewerThanPomFile(file)); + + if (isGenerateBundle()) { + + File bundleFile = + PluginHelper.getFile(getOutputDirectory(), getBundleThirdPartyPath()); + + setDoGenerateBundle(isForce() || + !bundleFile.exists() || + !isFileNewerThanPomFile(bundleFile) || + file.lastModified() > bundleFile.lastModified()); + } else { + + // not generating bundled file + setDoGenerateBundle(false); + } + licenseMap = createLicenseMap(); licenseMap.setLog(log); unsafeDependencies = licenseMap.getUnsafeDependencies(); - if (CollectionUtils.isEmpty(unsafeDependencies) || !isUseMissingfile()) { + if (CollectionUtils.isEmpty(unsafeDependencies) || + !isUseMissingFile() || + !isDoGenerate()) { // no unsafe dependencies // or user does not ask to generate missing file @@ -182,82 +228,6 @@ unsafeMappings = createUnsafeMapping(); } - public File getOutputDirectory() { - return outputDirectory; - } - - public String getThirdPartyFilename() { - return thirdPartyFilename; - } - - public String getBundleThirdPartyPath() { - return bundleThirdPartyPath; - } - - public boolean isGenerateBundle() { - return generateBundle; - } - - public boolean isFailIfWarning() { - return failIfWarning; - } - - public SortedSet<MavenProject> getUnsafeDependencies() { - return unsafeDependencies; - } - - public File getThirdPartyFile() { - return thirdPartyFile; - } - - public LicenseMap getLicenseMap() { - return licenseMap; - } - - public void setOutputDirectory(File outputDirectory) { - this.outputDirectory = outputDirectory; - } - - public void setThirdPartyFilename(String thirdPartyFilename) { - this.thirdPartyFilename = thirdPartyFilename; - } - - public void setBundleThirdPartyPath(String bundleThirdPartyPath) { - this.bundleThirdPartyPath = bundleThirdPartyPath; - } - - public void setGenerateBundle(boolean generateBundle) { - this.generateBundle = generateBundle; - } - - public void setThirdPartyFile(File thirdPartyFile) { - this.thirdPartyFile = thirdPartyFile; - } - - public boolean isUseMissingfile() { - return useMissingfile; - } - - public File getMissingFile() { - return missingFile; - } - - public void setUseMissingfile(boolean useMissingfile) { - this.useMissingfile = useMissingfile; - } - - public void setMissingFile(File missingFile) { - this.missingFile = missingFile; - } - - public void setFailIfWarning(boolean failIfWarning) { - this.failIfWarning = failIfWarning; - } - - public SortedProperties getUnsafeMappings() { - return unsafeMappings; - } - protected boolean checkUnsafeDependencies() { SortedSet<MavenProject> unsafeDependencies = getUnsafeDependencies(); boolean unsafe = !CollectionUtils.isEmpty(unsafeDependencies); @@ -304,13 +274,13 @@ return sb.toString(); } - protected void writeThirdPartyFile(boolean generate, boolean generateBundle) throws IOException { + protected void writeThirdPartyFile() throws IOException { Log log = getLog(); LicenseMap licenseMap = getLicenseMap(); File target = getThirdPartyFile(); - if (generate) { + if (isDoGenerate()) { StringBuilder sb = new StringBuilder(); if (licenseMap.isEmpty()) { sb.append(NO_DEPENDENCIES_MESSAGE); @@ -336,19 +306,26 @@ // group by dependencies SortedMap<MavenProject, String[]> map = licenseMap.toDependencyMap(); - sb.append("List of ").append(map.size()).append(" third-party dependencies.\n\n"); + sb.append("List of ").append(map.size()).append(" third-party dependencies.\n"); - String format = "\n%1$s %2$s"; + List<String> lines = new ArrayList<String>(); + for (Map.Entry<MavenProject, String[]> entry : map.entrySet()) { String artifact = getArtifactName(entry.getKey()); StringBuilder buffer = new StringBuilder(); for (String license : entry.getValue()) { buffer.append(" (").append(license).append(")"); } - String licenses = buffer.toString(); - sb.append(String.format(format, licenses, artifact)); + String line = licenses + " " + artifact; + lines.add(line); } + + Collections.sort(lines); + for (String line : lines) { + sb.append('\n').append(line); + } + lines.clear(); } } String content = sb.toString(); @@ -361,7 +338,7 @@ writeFile(target, content, getEncoding()); } - if (generateBundle) { + if (isDoGenerateBundle()) { // creates the bundled license file File bundleTarget = @@ -378,4 +355,104 @@ public void setGroupByLicense(boolean groupByLicense) { this.groupByLicense = groupByLicense; } + + public File getOutputDirectory() { + return outputDirectory; + } + + public String getThirdPartyFilename() { + return thirdPartyFilename; + } + + public String getBundleThirdPartyPath() { + return bundleThirdPartyPath; + } + + public boolean isGenerateBundle() { + return generateBundle; + } + + public boolean isFailIfWarning() { + return failIfWarning; + } + + public SortedSet<MavenProject> getUnsafeDependencies() { + return unsafeDependencies; + } + + public File getThirdPartyFile() { + return thirdPartyFile; + } + + public LicenseMap getLicenseMap() { + return licenseMap; + } + + public void setOutputDirectory(File outputDirectory) { + this.outputDirectory = outputDirectory; + } + + public void setThirdPartyFilename(String thirdPartyFilename) { + this.thirdPartyFilename = thirdPartyFilename; + } + + public void setBundleThirdPartyPath(String bundleThirdPartyPath) { + this.bundleThirdPartyPath = bundleThirdPartyPath; + } + + public void setGenerateBundle(boolean generateBundle) { + this.generateBundle = generateBundle; + } + + public void setThirdPartyFile(File thirdPartyFile) { + this.thirdPartyFile = thirdPartyFile; + } + + public boolean isUseMissingFile() { + return useMissingFile; + } + + public File getMissingFile() { + return missingFile; + } + + public void setUseMissingFile(boolean useMissingFile) { + this.useMissingFile = useMissingFile; + } + + public void setMissingFile(File missingFile) { + this.missingFile = missingFile; + } + + public void setFailIfWarning(boolean failIfWarning) { + this.failIfWarning = failIfWarning; + } + + public SortedProperties getUnsafeMappings() { + return unsafeMappings; + } + + public boolean isForce() { + return force; + } + + public boolean isDoGenerate() { + return doGenerate; + } + + public void setForce(boolean force) { + this.force = force; + } + + public void setDoGenerate(boolean doGenerate) { + this.doGenerate = doGenerate; + } + + public boolean isDoGenerateBundle() { + return doGenerateBundle; + } + + public void setDoGenerateBundle(boolean doGenerateBundle) { + this.doGenerateBundle = doGenerateBundle; + } } \ No newline at end of file Modified: trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyMojo.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyMojo.java 2010-06-25 11:51:13 UTC (rev 1777) +++ trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyMojo.java 2010-06-25 13:30:21 UTC (rev 1778) @@ -34,7 +34,6 @@ import org.apache.maven.project.MavenProjectBuilder; import org.apache.maven.project.ProjectBuildingException; import org.nuiton.io.SortedProperties; -import org.nuiton.plugin.PluginHelper; import java.io.File; import java.io.FileWriter; @@ -58,14 +57,6 @@ public class AddThirdPartyMojo extends AbstractAddThirdPartyMojo { /** - * Un flag pour forcer la generation. - * - * @parameter expression="${license.force}" default-value="false" - * @since 1.0.0 - */ - protected boolean force; - - /** * Local Repository. * * @parameter expression="${localRepository}" @@ -95,10 +86,6 @@ */ protected MavenProjectBuilder mavenProjectBuilder; - private boolean doGenerate; - - private boolean doGenerateBundle; - private boolean doGenerateMissing; @Override @@ -113,29 +100,6 @@ LicenseMap licenseMap = new LicenseMap(); licenseMap.setLog(log); - File file = getThirdPartyFile(); - - setDoGenerate(isForce() || !file.exists() || !isFileNewerThanPomFile(file)); - - if (isGenerateBundle()) { - - File bundleFile = - PluginHelper.getFile(getOutputDirectory(), getBundleThirdPartyPath()); - - setDoGenerateBundle(isForce() || - !bundleFile.exists() || - !isFileNewerThanPomFile(bundleFile) || - file.lastModified() > bundleFile.lastModified()); - } else { - - // not generating bundled file - setDoGenerateBundle(false); - } - - if (!isDoGenerate() && !isDoGenerateBundle()) { - return licenseMap; - } - // build the license map for the dependencies of the project for (Object o : getProject().getArtifacts()) { @@ -153,28 +117,27 @@ licenseMap.addLicense(project, project.getLicenses()); } - return licenseMap; } - @Override protected SortedProperties createUnsafeMapping() throws ProjectBuildingException, IOException { - SortedProperties unsafeMappings = getLicenseMap().loadUnsafeMapping(getEncoding(), getMissingFile()); + SortedProperties unsafeMappings = + getLicenseMap().loadUnsafeMapping(getEncoding(), + getMissingFile()); + SortedSet<MavenProject> unsafeDependencies = getUnsafeDependencies(); setDoGenerateMissing(!CollectionUtils.isEmpty(unsafeDependencies) && - isUseMissingfile()); + isUseMissingFile()); return unsafeMappings; } @Override protected boolean checkSkip() { - if (!isDoGenerate() && - !isDoGenerateBundle() && - !isDoGenerateMissing()) { + if (!isDoGenerateMissing()) { getLog().info("All files are up to date, skip goal execution."); return false; @@ -187,7 +150,7 @@ boolean unsafe = checkUnsafeDependencies(); - writeThirdPartyFile(isDoGenerate(), isDoGenerateBundle()); + writeThirdPartyFile(); if (isDoGenerateMissing()) { @@ -204,10 +167,9 @@ protected void writeMissingFile() throws IOException { Log log = getLog(); - - LicenseMap licenseMap = getLicenseMap(); File file = getMissingFile(); + createDirectoryIfNecessary(file.getParentFile()); if (isVerbose()) { log.info("regenerate missing license file " + file); @@ -236,54 +198,29 @@ protected MavenProject addArtifact(String id, Artifact artifact) throws ProjectBuildingException { - MavenProject project; + MavenProject project = getArtifactCache().get(id); Log log = getLog(); - if (getArtifactCache().containsKey(id)) { - project = getArtifactCache().get(id); + if (project != null) { if (isVerbose()) { log.info("add dependency [" + id + "] (from cache)"); } - return project; + } else { + project = mavenProjectBuilder.buildFromRepository( + artifact, + remoteRepositories, + localRepository, + false + ); + if (isVerbose()) { + log.info("add dependency [" + id + "]"); + } + getArtifactCache().put(id, project); } - project = mavenProjectBuilder.buildFromRepository( - artifact, - remoteRepositories, - localRepository, - false - ); - if (isVerbose()) { - log.info("add dependency [" + id + "]"); - } - getArtifactCache().put(id, project); + return project; } - - public boolean isForce() { - return force; - } - - public boolean isDoGenerate() { - return doGenerate; - } - - public void setForce(boolean force) { - this.force = force; - } - - public void setDoGenerate(boolean doGenerate) { - this.doGenerate = doGenerate; - } - - public boolean isDoGenerateBundle() { - return doGenerateBundle; - } - - public void setDoGenerateBundle(boolean doGenerateBundle) { - this.doGenerateBundle = doGenerateBundle; - } - public boolean isDoGenerateMissing() { return doGenerateMissing; } Modified: trunk/src/main/java/org/nuiton/license/plugin/AggregatorAddThirdPartyMojo.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/AggregatorAddThirdPartyMojo.java 2010-06-25 11:51:13 UTC (rev 1777) +++ trunk/src/main/java/org/nuiton/license/plugin/AggregatorAddThirdPartyMojo.java 2010-06-25 13:30:21 UTC (rev 1778) @@ -61,7 +61,7 @@ * @required * @since 2.3 */ - protected List reactorProjects; + protected List<?> reactorProjects; @Override protected boolean checkPackaging() { @@ -143,7 +143,7 @@ } boolean unsafe = checkUnsafeDependencies(); - writeThirdPartyFile(true, isGenerateBundle()); + writeThirdPartyFile(); if (unsafe && isFailIfWarning()) { throw new MojoFailureException("There is some dependencies with no license, please review the modules."); Modified: trunk/src/main/java/org/nuiton/license/plugin/LicenseMap.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/LicenseMap.java 2010-06-25 11:51:13 UTC (rev 1777) +++ trunk/src/main/java/org/nuiton/license/plugin/LicenseMap.java 2010-06-25 13:30:21 UTC (rev 1778) @@ -131,6 +131,8 @@ // there is some unsafe dependencies if (missingFile.exists()) { + getLog().info("Load missing file "+missingFile); + // load the missing file unsafeMappings.load(missingFile); }
participants (1)
-
tchemit@users.nuiton.org