diff -Nru maven-debian-helper-1.4.5/bin/mh_make maven-debian-helper-1.5/bin/mh_make --- maven-debian-helper-1.4.5/bin/mh_make 2010-12-05 17:23:08.000000000 +0000 +++ maven-debian-helper-1.5/bin/mh_make 2012-01-25 21:05:47.000000000 +0000 @@ -127,10 +127,12 @@ echo echo "Checking that apt-file is installed and has been configured..." if [ -f /usr/bin/apt-file ]; then - apt-file search /usr/bin/mvnDebug | grep maven > /dev/null - if [ $? != 0 ]; then + res="ok" + apt-file search /usr/bin/mvnDebug | grep maven > /dev/null || res="failed" + if [ $? != 0 ] || [ "$res" == "failed" ]; then echo "Warning: apt-file doesn't seem to be configured" - echo "Running sudo apt-file update" + echo "Running sudo apt-file update... (this operation may require that you" + echo "enter your password)" sudo apt-file update else echo '[ok]' @@ -170,10 +172,10 @@ # Restore state after a brutal stop if [ -f debian/$BIN_PACKAGE.poms ]; then - mh_unpatchpoms -p$BIN_PACKAGE + mh_unpatchpoms -p$BIN_PACKAGE || true fi if [ -f debian/patches/series ]; then - quilt pop -a + quilt pop -a || true fi # Apply existing quilt patchs as source 3(quilt) is used in the package @@ -221,3 +223,4 @@ rm -f debian/*.substvars rm -f .debianVersion +rm -f velocity.log diff -Nru maven-debian-helper-1.4.5/debian/build.properties maven-debian-helper-1.5/debian/build.properties --- maven-debian-helper-1.4.5/debian/build.properties 2010-03-29 19:53:32.000000000 +0000 +++ maven-debian-helper-1.5/debian/build.properties 2012-01-25 21:05:47.000000000 +0000 @@ -1,4 +1,5 @@ build.directory=target +build.javaVersion=1.5 javadoc.dir=target/api -maven.test.skip=true +#maven.test.skip=true diff -Nru maven-debian-helper-1.4.5/debian/changelog maven-debian-helper-1.5/debian/changelog --- maven-debian-helper-1.4.5/debian/changelog 2011-09-01 20:52:31.000000000 +0000 +++ maven-debian-helper-1.5/debian/changelog 2012-01-25 21:05:47.000000000 +0000 @@ -1,3 +1,35 @@ +maven-debian-helper (1.5) unstable; urgency=low + + [ Ludovic Claude ] + * Install jars in /usr/share/java (Closes: #636660) + * Now requires Java 1.5 or better to compile and run. + * Remove velocity.log after running mh_make (Closes: #641261) + * SysInstallMojo: read classifier and java-lib parameters. + * mh_make: upgrade Standard-Version (Closes: #641302) + * mh_make: clean up Debian emails of the form My Name + (Closes: #638788) + * mh_make: fix description in generated maven.rules (Closes: #639637) + * mh_make: add support to generate and install Javadoc on multi projects + during an Ant build. + * Fix failing tests in DependenciesSolverTest + * Run unit tests during the build, + * d/control: add B-D on libcommons-io-java as it's used by the junit tests. + * Generate package-doc.poms for Ant builds + * mh_make: fix resolution of versionless dependencies and missing + parent POMs (Closes: #639316) + * mh_make: Don't include document packages in the dependency search + (Closes: #656235) + * Fix installation of javadoc jar (Closes: #656311) + * Fix installation of artifacts using a classifier + + [ Damien Raude-Morvan ] + * maven-packager-utils/src/main/resources/build.xml.vm: package-module ant + macro is always needed (at least for root module). + * Follow-up for #589635: avoid creating a file called mvn-build during + the build. + + -- Ludovic Claude Tue, 24 Jan 2012 23:55:22 +0100 + maven-debian-helper (1.4.5) unstable; urgency=low * SysInstallMojo: Support "finalName" attribute to override @@ -14,8 +46,6 @@ they are only required when mh_make is used * mh_make: rescan the Maven repository after the user installs a required package. - * mh_resolve_dependencies: Also launch Maven in offline mode - (with --offline option) when --offline parameter is used. [ Damien Raude-Morvan ] * Upload to unstable (Closes: #637656). diff -Nru maven-debian-helper-1.4.5/debian/control maven-debian-helper-1.5/debian/control --- maven-debian-helper-1.4.5/debian/control 2011-08-20 14:25:45.000000000 +0000 +++ maven-debian-helper-1.5/debian/control 2012-01-25 21:05:47.000000000 +0000 @@ -4,9 +4,9 @@ Maintainer: Debian Java Maintainers Uploaders: Torsten Werner , Ludovic Claude , Michael Koch , Damien Raude-Morvan -Build-Depends: cdbs, debhelper (>= 7), default-jdk, maven-ant-helper (>> 6.7), ant-optional, help2man -Build-Depends-Indep: maven-repo-helper (>= 1.5), junit, libmaven-plugin-tools-java, - libplexus-velocity-java +Build-Depends: cdbs, debhelper (>= 7), default-jdk, maven-ant-helper (>= 7.0), ant-optional, help2man +Build-Depends-Indep: maven-repo-helper (>= 1.7.1), junit, libmaven-plugin-tools-java, + libplexus-velocity-java, libcommons-io-java Standards-Version: 3.9.2 Vcs-Svn: svn://svn.debian.org/svn/pkg-java/trunk/maven-debian-helper Vcs-Browser: http://svn.debian.org/wsvn/pkg-java/trunk/maven-debian-helper/ diff -Nru maven-debian-helper-1.4.5/debian/rules maven-debian-helper-1.5/debian/rules --- maven-debian-helper-1.4.5/debian/rules 2010-12-05 17:23:07.000000000 +0000 +++ maven-debian-helper-1.5/debian/rules 2012-01-25 21:05:47.000000000 +0000 @@ -6,7 +6,7 @@ PACKAGE := $(DEB_SOURCE_PACKAGE) VERSION := $(shell echo ${DEB_UPSTREAM_VERSION} | sed -r 's/([0-9\.]+).*/\1/') JAVA_HOME := /usr/lib/jvm/default-java -DEB_JARS := ant-nodeps classworlds maven-core maven-artifact maven-artifact-manager maven-model \ +DEB_JARS := ant-junit junit commons-io classworlds maven-core maven-artifact maven-artifact-manager maven-model \ maven-compat maven-plugin-api maven-project maven-scm-api velocity file-management plexus-utils \ plexus-container-default-alpha maven-repo-helper DEB_ANT_BUILD_TARGET := package #javadoc diff -Nru maven-debian-helper-1.4.5/maven-build-nodocs/pom.xml maven-debian-helper-1.5/maven-build-nodocs/pom.xml --- maven-debian-helper-1.4.5/maven-build-nodocs/pom.xml 2011-09-01 00:06:14.000000000 +0000 +++ maven-debian-helper-1.5/maven-build-nodocs/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -5,7 +5,7 @@ org.debian.maven maven-debian - 1.4 + 1.5 maven-build-nodocs diff -Nru maven-debian-helper-1.4.5/maven-debian-helper/pom.xml maven-debian-helper-1.5/maven-debian-helper/pom.xml --- maven-debian-helper-1.4.5/maven-debian-helper/pom.xml 2011-09-01 00:06:14.000000000 +0000 +++ maven-debian-helper-1.5/maven-debian-helper/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -5,7 +5,7 @@ org.debian.maven maven-debian - 1.4 + 1.5 maven-debian-helper @@ -16,7 +16,6 @@ classworlds classworlds - 1.1 diff -Nru maven-debian-helper-1.4.5/maven-debian-plugin/pom.xml maven-debian-helper-1.5/maven-debian-plugin/pom.xml --- maven-debian-helper-1.4.5/maven-debian-plugin/pom.xml 2011-09-01 00:06:14.000000000 +0000 +++ maven-debian-helper-1.5/maven-debian-plugin/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -6,7 +6,7 @@ maven-debian org.debian.maven - 1.4 + 1.5 maven-debian-plugin diff -Nru maven-debian-helper-1.4.5/maven-debian-plugin/src/main/java/org/debian/maven/plugin/DirectoryUtils.java maven-debian-helper-1.5/maven-debian-plugin/src/main/java/org/debian/maven/plugin/DirectoryUtils.java --- maven-debian-helper-1.4.5/maven-debian-plugin/src/main/java/org/debian/maven/plugin/DirectoryUtils.java 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-debian-plugin/src/main/java/org/debian/maven/plugin/DirectoryUtils.java 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,54 @@ +package org.debian.maven.plugin; + +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +/* + * Copyright 2011 Ludovic Claude. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +public class DirectoryUtils { + + public static String relativePath(String absSrcDir, String absTargetPath) { + List src = splitDirs(absSrcDir); + List target = splitDirs(absTargetPath); + int common = 0; + while (common < src.size() && common < target.size() && src.get(common).equals(target.get(common))) { + common++; + } + StringBuilder sb = new StringBuilder(); + for (int i = common; i < src.size(); i++) { + sb.append("../"); + } + for (int j = common; j < target.size(); j++) { + sb.append(target.get(j)); + if (j + 1 < target.size()) { + sb.append("/"); + } + } + return sb.toString(); + } + + private static List splitDirs(String path) { + List result = new ArrayList(); + StringTokenizer st = new StringTokenizer(path, "/", false); + while (st.hasMoreTokens()) { + result.add(st.nextToken()); + } + return result; + } +} diff -Nru maven-debian-helper-1.4.5/maven-debian-plugin/src/main/java/org/debian/maven/plugin/SysInstallDocMojo.java maven-debian-helper-1.5/maven-debian-plugin/src/main/java/org/debian/maven/plugin/SysInstallDocMojo.java --- maven-debian-helper-1.4.5/maven-debian-plugin/src/main/java/org/debian/maven/plugin/SysInstallDocMojo.java 2011-06-08 21:19:44.000000000 +0000 +++ maven-debian-helper-1.5/maven-debian-plugin/src/main/java/org/debian/maven/plugin/SysInstallDocMojo.java 2012-01-25 21:05:47.000000000 +0000 @@ -20,30 +20,25 @@ /** * Install the javadoc jar. - * - * @author Ludovic Claude * + * @author Ludovic Claude * @goal sysinstall-doc */ -public class SysInstallDocMojo extends SysInstallMojo -{ +public class SysInstallDocMojo extends SysInstallMojo { - protected String destJarName() - { - return getDestArtifactId() + "-" + getVersion() + "-javadoc.jar"; - } + { + setClassifier("javadoc"); + } - protected String debianJarName() - { - return getDestArtifactId() + "-" + getDebianVersion() + "-javadoc.jar"; - } + protected String jarName() { + return getArtifactId() + "-" + getVersion() + "-javadoc.jar"; + } - /** - * do the actual work - */ - protected void runMojo() throws IOException - { - copyJar(); - } + /** + * do the actual work + */ + protected void runMojo() throws IOException { + copyJar(); + } } diff -Nru maven-debian-helper-1.4.5/maven-debian-plugin/src/main/java/org/debian/maven/plugin/SysInstallMojo.java maven-debian-helper-1.5/maven-debian-plugin/src/main/java/org/debian/maven/plugin/SysInstallMojo.java --- maven-debian-helper-1.4.5/maven-debian-plugin/src/main/java/org/debian/maven/plugin/SysInstallMojo.java 2011-08-31 23:43:49.000000000 +0000 +++ maven-debian-helper-1.5/maven-debian-plugin/src/main/java/org/debian/maven/plugin/SysInstallMojo.java 2012-01-25 21:05:47.000000000 +0000 @@ -34,612 +34,600 @@ * * @goal sysinstall */ -public class SysInstallMojo extends AbstractMojo -{ - // ---------------------------------------------------------------------- - // Mojo parameters - // ---------------------------------------------------------------------- - - /** - * groupId - * - * @parameter expression="${project.groupId}" - * @required - * @readonly - */ - private String groupId; - - /** - * artifactId - * - * @parameter expression="${project.artifactId}" - * @required - * @readonly - */ - private String artifactId; - - /** - * destGroupId - * - * @parameter expression="${project.groupId}" - * @required - */ - private String destGroupId; - - /** - * destArtifactId - * - * @parameter expression="${project.artifactId}" - * @required - */ - private String destArtifactId; - - /** - * version - * - * @parameter expression="${project.version}" - * @required - * @readonly - */ - private String version; - - /** - * debianVersion - * - * @parameter - */ - private String debianVersion; - - /** - * directory where the current pom.xml can be found - * - * @parameter expression="${basedir}" - * @required - * @readonly - */ - private File basedir; - - /** - * directory of the jar file - * - * @parameter expression="${project.build.directory}" - * @required - * @readonly - */ - private String jarDir; - - /** - * finalname of the artifact - * - * @parameter expression="${project.build.finalName}" - * @required - * @readonly - */ - private String finalName; - - /** - * Debian directory - * - * @parameter expression="${debian.dir}" - */ - private File debianDir; - - /** - * Debian package (send from commande line) - * - * @parameter expression="${debian.package}" - */ - private String debianPackage; - - /** - * Debian package destination (set by xxx.poms file). - * By defaul, equals to debianPackage attribute. - * - * @parameter expression="${debian.package}" - */ - private String destPackage; - - /** - * @parameter expression="${maven.rules}" default-value="maven.rules" - * @required - */ - private String mavenRules; - - /** - * root directory of the Maven repository - * - * @parameter expression="${basedir}" - * @readonly - */ - private File repoDir; +public class SysInstallMojo extends AbstractMojo { + + // ---------------------------------------------------------------------- + // Mojo parameters + // ---------------------------------------------------------------------- + + /** + * groupId + * + * @parameter expression="${project.groupId}" + * @required + * @readonly + */ + private String groupId; + + /** + * artifactId + * + * @parameter expression="${project.artifactId}" + * @required + * @readonly + */ + private String artifactId; + + /** + * destGroupId + * + * @parameter expression="${project.groupId}" + * @required + */ + private String destGroupId; + + /** + * destArtifactId + * + * @parameter expression="${project.artifactId}" + * @required + */ + private String destArtifactId; + + /** + * version + * + * @parameter expression="${project.version}" + * @required + * @readonly + */ + private String version; + + /** + * debianVersion + * + * @parameter + */ + private String debianVersion; + + /** + * directory where the current pom.xml can be found + * + * @parameter expression="${basedir}" + * @required + * @readonly + */ + private File basedir; + + /** + * directory of the jar file + * + * @parameter expression="${project.build.directory}" + * @required + * @readonly + */ + private String jarDir; + + /** + * finalname of the artifact + * + * @parameter expression="${project.build.finalName}" + * @required + * @readonly + */ + private String finalName; + + /** + * Debian directory + * + * @parameter expression="${debian.dir}" + */ + private File debianDir; + + /** + * Debian package (send from commande line) + * + * @parameter expression="${debian.package}" + */ + private String debianPackage; + + /** + * Debian package destination (set by xxx.poms file). + * By defaul, equals to debianPackage attribute. + * + * @parameter expression="${debian.package}" + */ + private String destPackage; + + /** + * @parameter expression="${maven.rules}" default-value="maven.rules" + * @required + */ + private String mavenRules; + + /** + * root directory of the Maven repository + * + * @parameter expression="${basedir}" + * @readonly + */ + private File repoDir; /** * Install the jar to /usr/share/java if true. Default is true + * * @parameter expression="${install.to.usj}" default-value="true" */ - private boolean installToUsj = true; + private boolean installToUsj = true; + + /** + * Basename of the JAR inside /usr/share/java + */ + private String usjName; - /** - * Basename of the JAR inside /usr/share/java - */ - private String usjName; - - /** - * Version of the JAR install /usr/share/java - */ + /** + * Version of the JAR install /usr/share/java + */ private String usjVersion; /** * If true, disable installation of version-less JAR into /usr/share/java */ - private boolean noUsjVersionless; + private boolean noUsjVersionless; + + private String classifier; + + // ---------------------------------------------------------------------- + // Public methods + // ---------------------------------------------------------------------- + + public void execute() throws MojoExecutionException { + try { + runMojo(); + } + catch (IOException e) { + getLog().error("execution failed", e); + throw new MojoExecutionException("IOException catched"); + } + } + + // ---------------------------------------------------------------------- + // Private methods + // ---------------------------------------------------------------------- + + protected String getArtifactId() { + return artifactId; + } + + protected String getDestArtifactId() { + return destArtifactId; + } + + protected String getVersion() { + return version; + } + + protected String getDebianVersion() { + return debianVersion; + } + + protected File getDebianDir() { + return debianDir; + } + + protected String getDebianPackage() { + return debianPackage; + } + + protected String getDestPackage() { + return destPackage; + } + + public String getClassifier() { + return classifier; + } + + public void setClassifier(String classifier) { + this.classifier = classifier; + } + + /** + * optional destination prefix, empty by default + */ + protected String packagePath() { + return ""; + } + + /** + * returns e.g. /org/debian/maven/maven-debian-plugin/0.1/ + */ + protected final String repoPath() { + return "/" + groupId.replace('.', '/') + "/" + artifactId + "/" + version + "/"; + } - // ---------------------------------------------------------------------- - // Public methods - // ---------------------------------------------------------------------- - - public void execute() throws MojoExecutionException - { - try - { - runMojo(); - } - catch(IOException e) - { - getLog().error("execution failed", e); - throw new MojoExecutionException("IOException catched"); - } - } - - // ---------------------------------------------------------------------- - // Private methods - // ---------------------------------------------------------------------- - - protected String getArtifactId() - { - return artifactId; - } - - protected String getDestArtifactId() - { - return destArtifactId; - } - - protected String getVersion() - { - return version; - } - - protected String getDebianVersion() - { - return debianVersion; - } - - protected File getDebianDir() - { - return debianDir; - } - - protected String getDebianPackage() - { - return debianPackage; - } - - protected String getDestPackage() - { - return destPackage; - } - - /** - * optional destination prefix, empty by default - */ - protected String packagePath() - { - return ""; - } - - /** - * returns e.g. /org/debian/maven/maven-debian-plugin/0.1/ - */ - protected final String repoPath() - { - return "/" + groupId.replace( '.', '/' ) + "/" + artifactId + "/" + version + "/"; - } - - /** - * returns e.g. /org/debian/maven/maven-debian-plugin/0.1/ - */ - protected final String destRepoPath() - { - return "/" + destGroupId.replace( '.', '/' ) + "/" + destArtifactId + "/" + version + "/"; - } - - /** - * returns e.g. /org/debian/maven/maven-debian-plugin/debian/ - */ - protected final String debianRepoPath() - { - return "/" + destGroupId.replace( '.', '/' ) + "/" + destArtifactId + "/" + debianVersion + "/"; - } - - /** - * absolute path to destination dir - */ - protected String fullRepoPath() - { - return packagePath() + "/usr/share/maven-repo" + destRepoPath(); - } - - /** - * absolute path to destination dir - */ - protected String debianFullRepoPath() - { - return packagePath() + "/usr/share/maven-repo" + debianRepoPath(); - } - - protected String pomName() - { - return artifactId + "-" + version + ".pom"; - } - - protected String destPomName() - { - return destArtifactId + "-" + version + ".pom"; - } - - protected String debianPomName() - { - return destArtifactId + "-" + debianVersion + ".pom"; - } - - private String pomSrcPath() - { - return basedir.getAbsolutePath() + "/pom.xml"; - } - - private String cleanedPomSrcPath() - { - return basedir.getAbsolutePath() + "/target/pom.xml"; - } - - private String cleanedPomPropertiesSrcPath() - { - return basedir.getAbsolutePath() + "/target/pom.properties"; - } - - private String debianPomSrcPath() - { - return basedir.getAbsolutePath() + "/target/pom.debian.xml"; - } - - private String debianPomPropertiesSrcPath() - { - return basedir.getAbsolutePath() + "/target/pom.debian.properties"; - } - - private String pomDestPath() - { - return fullRepoPath() + destPomName(); - } - - private String debianPomDestPath() - { - return debianFullRepoPath() + debianPomName(); - } - - protected String jarName() - { - String jarName = ""; - if (finalName != null && finalName.length() > 0) - { - jarName += finalName; - } - else - { - jarName += artifactId + "-" + version; - } - return jarName + ".jar"; - } - - protected String destJarName() - { - return destArtifactId + "-" + version + ".jar"; - } - - protected String debianJarName() - { - return destArtifactId + "-" + debianVersion + ".jar"; - } - - protected final String fullJarName() - { - return jarDir + "/" + jarName(); - } - - protected final String jarDestPath() - { - return fullRepoPath() + destJarName(); - } - - protected final String jarDestRelPath() - { - return "../" + version + "/" + destJarName(); - } - - protected final String debianJarDestPath() - { - return debianFullRepoPath() + debianJarName(); - } - - /** - * jar file name without version number - */ - protected final String compatName() - { - return destArtifactId + ".jar"; - } - - protected final String compatSharePath() - { - return packagePath() + "/usr/share/java/"; - } - - protected final String compatRelPath() - { - return "../maven-repo" + destRepoPath() + destJarName(); - } - - /** - * Example: /usr/share/java/xml-apis.jar - */ - protected String fullCompatPath() - { - return compatSharePath() + destUsjJarName(); - } - - /** - * Example: /usr/share/java/xml-apis-1.3.04.jar - */ - protected String versionedFullCompatPath() - { - return compatSharePath() + destUsjVersionnedJarName(); - } - - /** - * Compute version-less filename for installation into /usr/share/java - */ - private String destUsjJarName() { - String usjJarName = ""; - if (usjName != null && usjName.length() > 0) - { - usjJarName += usjName; - } - else - { - usjJarName += destArtifactId; - } - - return usjJarName + ".jar"; - } - - /** - * Compute versionned filename for installation into /usr/share/java - */ - private String destUsjVersionnedJarName() { - String usjJarName = ""; - if (usjName != null && usjName.length() > 0) - { - usjJarName += usjName; - } - else - { - usjJarName += destArtifactId; - } - - if (usjVersion != null && usjVersion.length() > 0) - { - usjJarName += "-" + usjVersion; - } - else - { - usjJarName += "-" + version; - } - - return usjJarName + ".jar"; - } - -/** - * command for creating the relative symlink - */ - private String[] linkCommand(String source, String dest) - { - String[] command = {"ln", "-s", source, dest}; - return command; - } - - private void mkdir(String path) throws IOException - { - File destinationDirectory = new File(path); - if (destinationDirectory.isDirectory()) - { - return; - } - if (!destinationDirectory.mkdirs()) - { - throw new IOException("cannot create destination directory " + path); - } - } - - private void run(String[] command) throws IOException - { - Runtime.getRuntime().exec(command, null); - } - - /** - * if a jar exists: copy it to the Maven repository - */ - protected void copyJar() throws IOException - { - File jarFile = new File(fullJarName()); - if (jarFile.exists()) - { - FileUtils.copyFile(jarFile, new File(jarDestPath())); - if (debianVersion != null && !debianVersion.equals(version)) - { - mkdir(debianFullRepoPath()); - run(linkCommand(jarDestRelPath(), debianJarDestPath())); - } - } - } - - /** - * if a jar exists: symlink it to the compat share dir - */ - private void symlinkJar() throws IOException - { - File jarFile = new File(fullJarName()); - if (jarFile.exists()) - { - mkdir(compatSharePath()); - System.out.println("Install link to " + artifactId + " into /usr/share/java"); - if (!noUsjVersionless) { - run(linkCommand(compatRelPath(), fullCompatPath())); - } - run(linkCommand(compatRelPath(), versionedFullCompatPath())); - } - } - - /** - * clean the pom.xml - */ - private void cleanPom() - { - File pomOptionsFile = new File(debianDir, debianPackage + ".poms"); - ListOfPOMs listOfPOMs = new ListOfPOMs(pomOptionsFile); - - // Use the saved pom before cleaning as it was untouched by the transform operation - String pomPath = pomSrcPath() + ".save"; - File pomFile = new File(pomPath); - String originalPomPath = pomSrcPath(); - File originalPom = new File(originalPomPath); - if (! pomFile.exists()) - { - pomFile = originalPom; - pomPath = originalPomPath; - } - - String relativePomPath = originalPom.getAbsolutePath(); - relativePomPath = relativePomPath.substring(debianDir.getParentFile().getAbsolutePath().length() + 1); - - ListOfPOMs.POMOptions pomOption = listOfPOMs.getPOMOptions(relativePomPath); - - if (pomOption != null && pomOption.isIgnore()) { - throw new RuntimeException("POM file " + pomFile + " should be ignored"); - } - if (pomOption != null && pomOption.getDestPackage() != null) { - destPackage = pomOption.getDestPackage(); - } - - // handle usj-name - if (pomOption != null && pomOption.getUsjName() != null) { - usjName = pomOption.getUsjName(); - } - - // handle usj-version - if (pomOption != null && pomOption.getUsjVersion() != null) { - usjVersion = pomOption.getUsjVersion(); - } - - // handle no-usj-versionless - if (pomOption != null) { - noUsjVersionless = pomOption.isNoUsjVersionless(); - } - - List params = new ArrayList(); - params.add("--keep-pom-version"); - - params.add("--package=" + destPackage); - String mavenRulesPath = new File(debianDir, mavenRules).getAbsolutePath(); - params.add("--rules=" + mavenRulesPath); - - System.out.println("Cleaning pom file: " + pomFile + " with options:"); - System.out.println("\t--keep-pom-version --package=" + destPackage); - System.out.println("\t--rules=" + mavenRulesPath); - - // add optional --no-parent option - if (pomOption != null && pomOption.isNoParent()) { - params.add("--no-parent"); - System.out.println("\t--no-parent"); - } - - // add options --keep-elements option - if (pomOption != null && pomOption.getKeepElements() != null) { - params.add("--keep-elements=" + pomOption.getKeepElements()); - System.out.println("\t--keep-elements=" + pomOption.getKeepElements()); - } - - params.add(pomFile.getAbsolutePath()); - params.add(cleanedPomSrcPath()); - params.add(cleanedPomPropertiesSrcPath()); - - POMCleaner.main((String[]) params.toArray(new String[params.size()])); - - Properties pomProperties = new Properties(); - try { - pomProperties.load(new FileReader(cleanedPomPropertiesSrcPath())); - } catch (IOException ex) { - ex.printStackTrace(); - } - destGroupId = pomProperties.getProperty("groupId"); - destArtifactId = pomProperties.getProperty("artifactId"); - debianVersion = pomProperties.getProperty("debianVersion"); - - if (debianVersion != null && !debianVersion.equals(version)) - { - params.remove(0); - params.remove(params.size() -1); - params.remove(params.size() -1); - params.add(debianPomSrcPath()); - params.add(debianPomPropertiesSrcPath()); - - POMCleaner.main((String[]) params.toArray(new String[params.size()])); - } - } - - /** - * copy the pom.xml - */ - protected void copyPom() throws IOException - { - FileUtils.copyFile(new File(cleanedPomSrcPath()), new File(pomDestPath())); - if (debianVersion != null && !debianVersion.equals(version)) - { - FileUtils.copyFile(new File(debianPomSrcPath()), new File(debianPomDestPath())); + /** + * returns e.g. /org/debian/maven/maven-debian-plugin/0.1/ + */ + protected final String destRepoPath() { + return "/" + destGroupId.replace('.', '/') + "/" + destArtifactId + "/" + version + "/"; } - } - /** + /** + * returns e.g. /org/debian/maven/maven-debian-plugin/debian/ + */ + protected final String debianRepoPath() { + return "/" + destGroupId.replace('.', '/') + "/" + destArtifactId + "/" + debianVersion + "/"; + } + + /** + * absolute path to destination dir + */ + protected String fullRepoPath() { + return packagePath() + "/usr/share/maven-repo" + destRepoPath(); + } + + /** + * absolute path to destination dir + */ + protected String debianFullRepoPath() { + return packagePath() + "/usr/share/maven-repo" + debianRepoPath(); + } + + protected String pomName() { + return artifactId + "-" + version + ".pom"; + } + + protected String destPomName() { + return destArtifactId + "-" + version + ".pom"; + } + + protected String debianPomName() { + return destArtifactId + "-" + debianVersion + ".pom"; + } + + private String pomSrcPath() { + return basedir.getAbsolutePath() + "/pom.xml"; + } + + private String cleanedPomSrcPath() { + return basedir.getAbsolutePath() + "/target/pom.xml"; + } + + private String cleanedPomPropertiesSrcPath() { + return basedir.getAbsolutePath() + "/target/pom.properties"; + } + + private String debianPomSrcPath() { + return basedir.getAbsolutePath() + "/target/pom.debian.xml"; + } + + private String debianPomPropertiesSrcPath() { + return basedir.getAbsolutePath() + "/target/pom.debian.properties"; + } + + private String pomDestPath() { + return fullRepoPath() + destPomName(); + } + + private String debianPomDestPath() { + return debianFullRepoPath() + debianPomName(); + } + + protected String jarName() { + String jarName; + if (finalName != null && finalName.length() > 0) { + jarName = finalName; + } else { + jarName = artifactId + "-" + version; + } + if (classifier != null) { + jarName += "-" + classifier; + } + return jarName + ".jar"; + } + + protected String destJarName() { + if (classifier != null) { + return destArtifactId + "-" + version + "-" + classifier + ".jar"; + } + return destArtifactId + "-" + version + ".jar"; + } + + protected String debianJarName() { + if (classifier != null) { + return destArtifactId + "-" + debianVersion + "-" + classifier + ".jar"; + } + return destArtifactId + "-" + debianVersion + ".jar"; + } + + protected final String fullJarName() { + return jarDir + "/" + jarName(); + } + + protected final String jarDestPath() { + return fullRepoPath() + destJarName(); + } + + protected final String jarDestRelPath() { + return "../" + version + "/" + destJarName(); + } + + protected final String debianJarDestPath() { + return debianFullRepoPath() + debianJarName(); + } + + /** + * jar file name without version number + */ + protected final String compatName() { + return destArtifactId + ".jar"; + } + + protected final String compatSharePath() { + return packagePath() + "/usr/share/java/"; + } + + /** + * Example: /usr/share/java/xml-apis.jar + */ + protected String fullCompatPath() { + return compatSharePath() + destUsjJarName(); + } + + /** + * Example: /usr/share/java/xml-apis-1.3.04.jar + */ + protected String versionedFullCompatPath() { + return compatSharePath() + destUsjVersionnedJarName(); + } + + /** + * Compute version-less filename for installation into /usr/share/java + */ + private String destUsjJarName() { + String usjJarName = ""; + if (usjName != null && usjName.length() > 0) { + usjJarName += usjName; + } else { + usjJarName += destArtifactId; + } + + return usjJarName + ".jar"; + } + + /** + * Compute versionned filename for installation into /usr/share/java + */ + private String destUsjVersionnedJarName() { + String usjJarName = ""; + if (usjName != null && usjName.length() > 0) { + usjJarName += usjName; + } else { + usjJarName += destArtifactId; + } + + if (usjVersion != null && usjVersion.length() > 0) { + usjJarName += "-" + usjVersion; + } else { + usjJarName += "-" + version; + } + + return usjJarName + ".jar"; + } + + /** + * command for creating the relative symlink + */ + private String[] linkCommand(String source, String dest) { + String[] command = {"ln", "-s", source, dest}; + return command; + } + + private void mkdir(String path) throws IOException { + File destinationDirectory = new File(path); + if (destinationDirectory.isDirectory()) { + return; + } + if (!destinationDirectory.mkdirs()) { + throw new IOException("cannot create destination directory " + path); + } + } + + private void run(String[] command) throws IOException { + Runtime.getRuntime().exec(command, null); + } + + /** + * if a jar exists: copy it to the Maven repository + */ + protected void copyJar() throws IOException { + File jarFile = new File(fullJarName()); + if (jarFile.exists()) { + System.out.println("Install jar file into Maven repo: " + jarFile.getAbsolutePath()); + FileUtils.copyFile(jarFile, new File(jarDestPath())); + if (debianVersion != null && !debianVersion.equals(version)) { + mkdir(debianFullRepoPath()); + run(linkCommand(jarDestRelPath(), debianJarDestPath())); + } + } + } + + /** + * if a jar exists: copy it to the compat share dir + */ + private void copyJarToUsj() throws IOException { + File jarFile = new File(fullJarName()); + if (jarFile.exists()) { + System.out.println("Install jar for " + artifactId + " into /usr/share/java"); + mkdir(compatSharePath()); + FileUtils.copyFile(jarFile, new File(jarDestPath())); + if (noUsjVersionless) { + FileUtils.copyFile(jarFile, new File(versionedFullCompatPath())); + } else { + FileUtils.copyFile(jarFile, new File(fullCompatPath())); + run(linkCommand(destUsjJarName(), versionedFullCompatPath())); + } + } + } + + /** + * if a jar exists: symlink it from the compat share dir to its targets in the Maven repository + */ + private void symlinkJar() throws IOException { + File jarFile = new File(fullJarName()); + if (jarFile.exists()) { + mkdir(fullRepoPath()); + String targetPath = ""; + + if (noUsjVersionless) { + targetPath = versionedFullCompatPath(); + } else { + targetPath = fullCompatPath(); + } + + run(linkCommand(DirectoryUtils.relativePath(fullRepoPath(), targetPath), jarDestPath())); + if (debianVersion != null && !debianVersion.equals(version)) { + mkdir(debianFullRepoPath()); + run(linkCommand(DirectoryUtils.relativePath(debianFullRepoPath(), targetPath), debianJarDestPath())); + } + } + } + + /** + * clean the pom.xml + */ + private void cleanPom() { + File pomOptionsFile = new File(debianDir, debianPackage + ".poms"); + ListOfPOMs listOfPOMs = new ListOfPOMs(pomOptionsFile); + + // Use the saved pom before cleaning as it was untouched by the transform operation + String pomPath = pomSrcPath() + ".save"; + File pomFile = new File(pomPath); + String originalPomPath = pomSrcPath(); + File originalPom = new File(originalPomPath); + if (!pomFile.exists()) { + pomFile = originalPom; + pomPath = originalPomPath; + } + + String relativePomPath = originalPom.getAbsolutePath(); + relativePomPath = relativePomPath.substring(debianDir.getParentFile().getAbsolutePath().length() + 1); + + ListOfPOMs.POMOptions pomOption = listOfPOMs.getPOMOptions(relativePomPath); + + if (pomOption != null && pomOption.isIgnore()) { + throw new RuntimeException("POM file " + pomFile + " should be ignored"); + } + + if (pomOption != null) { + if (pomOption.getDestPackage() != null) { + destPackage = pomOption.getDestPackage(); + } + + // handle usj-name + if (pomOption.getUsjName() != null) { + usjName = pomOption.getUsjName(); + } + + // handle usj-version + if (pomOption.getUsjVersion() != null) { + usjVersion = pomOption.getUsjVersion(); + } + + // handle no-usj-versionless + noUsjVersionless = pomOption.isNoUsjVersionless(); + + // handle classifier + if (pomOption.getClassifier() != null) { + classifier = pomOption.getClassifier(); + } + + installToUsj = pomOption.isJavaLib(); + } + + List params = new ArrayList(); + params.add("--keep-pom-version"); + + params.add("--package=" + destPackage); + String mavenRulesPath = new File(debianDir, mavenRules).getAbsolutePath(); + params.add("--rules=" + mavenRulesPath); + + System.out.println("Cleaning pom file: " + pomFile + " with options:"); + System.out.println("\t--keep-pom-version --package=" + destPackage); + System.out.println("\t--rules=" + mavenRulesPath); + + // add optional --no-parent option + if (pomOption != null && pomOption.isNoParent()) { + params.add("--no-parent"); + System.out.println("\t--no-parent"); + } + + // add options --keep-elements option + if (pomOption != null && pomOption.getKeepElements() != null) { + params.add("--keep-elements=" + pomOption.getKeepElements()); + System.out.println("\t--keep-elements=" + pomOption.getKeepElements()); + } + + params.add(pomFile.getAbsolutePath()); + params.add(cleanedPomSrcPath()); + params.add(cleanedPomPropertiesSrcPath()); + + POMCleaner.main((String[]) params.toArray(new String[params.size()])); + + Properties pomProperties = new Properties(); + try { + pomProperties.load(new FileReader(cleanedPomPropertiesSrcPath())); + } catch (IOException ex) { + ex.printStackTrace(); + } + destGroupId = pomProperties.getProperty("groupId"); + destArtifactId = pomProperties.getProperty("artifactId"); + debianVersion = pomProperties.getProperty("debianVersion"); + + if (debianVersion != null && !debianVersion.equals(version)) { + params.remove(0); + params.remove(params.size() - 1); + params.remove(params.size() - 1); + params.add(debianPomSrcPath()); + params.add(debianPomPropertiesSrcPath()); + + POMCleaner.main((String[]) params.toArray(new String[params.size()])); + } + } + + /** + * copy the pom.xml + */ + protected void copyPom() throws IOException { + FileUtils.copyFile(new File(cleanedPomSrcPath()), new File(pomDestPath())); + if (debianVersion != null && !debianVersion.equals(version)) { + FileUtils.copyFile(new File(debianPomSrcPath()), new File(debianPomDestPath())); + } + } + + /** * Prepare the destination directories: remove the directory symlinks that were created * by copy-repo.sh if they exist as they point to a directory owned by root and that cannot * be modified. */ - protected void prepareDestDirs() { - // Simply try to delete the path. If it's a symlink, it will work, otherwise delete() returns false - new File(fullRepoPath()).delete(); - new File(debianFullRepoPath()).delete(); - } - /** - * do the actual work - */ - protected void runMojo() throws IOException - { - cleanPom(); - prepareDestDirs(); - copyPom(); - copyJar(); - if (installToUsj) { - symlinkJar(); + protected void prepareDestDirs() { + // Simply try to delete the path. If it's a symlink, it will work, otherwise delete() returns false + new File(fullRepoPath()).delete(); + new File(debianFullRepoPath()).delete(); + } + + /** + * do the actual work + */ + protected void runMojo() throws IOException { + cleanPom(); + prepareDestDirs(); + copyPom(); + if (installToUsj) { + copyJarToUsj(); + symlinkJar(); + } else { + copyJar(); + } } - } } diff -Nru maven-debian-helper-1.4.5/maven-debian-plugin/src/test/java/org/debian/maven/plugin/DirectoryUtilsTest.java maven-debian-helper-1.5/maven-debian-plugin/src/test/java/org/debian/maven/plugin/DirectoryUtilsTest.java --- maven-debian-helper-1.4.5/maven-debian-plugin/src/test/java/org/debian/maven/plugin/DirectoryUtilsTest.java 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-debian-plugin/src/test/java/org/debian/maven/plugin/DirectoryUtilsTest.java 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,29 @@ +package org.debian.maven.plugin; + +import junit.framework.TestCase; + +/* + * Copyright 2011 Ludovic Claude. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +public class DirectoryUtilsTest extends TestCase { + + public void testRelativePath() { + + assertEquals("../maven-repo/my/test/file.jar", DirectoryUtils.relativePath("/usr/share/java", "/usr/share/maven-repo/my/test/file.jar")); + + } +} diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/pom.xml maven-debian-helper-1.5/maven-packager-utils/pom.xml --- maven-debian-helper-1.4.5/maven-packager-utils/pom.xml 2011-09-01 00:06:14.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -6,7 +6,7 @@ maven-debian org.debian.maven - 1.4 + 1.5 maven-packager-utils @@ -17,37 +17,31 @@ org.apache.maven maven-plugin-api - 2.2.1 org.apache.maven maven-artifact - 2.2.1 - - - junit - junit - 3.8.2 - test org.apache.maven maven-project - 2.2.1 org.apache.velocity velocity - 1.6.2 org.debian.maven maven-repo-helper + junit + junit + test + + commons-io commons-io - 1.4 test diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesMojo.java maven-debian-helper-1.5/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesMojo.java --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesMojo.java 2011-06-25 22:31:21.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesMojo.java 2012-01-25 21:05:47.000000000 +0000 @@ -113,6 +113,7 @@ DependenciesSolver solver = new DependenciesSolver(); File basedir = project.getBasedir(); + // TODO: use the list of project defined here for some initialisation step, I've forgotten what to do... List projects = new ArrayList(); projects.add(project.getFile()); if (collectedProjects != null) { diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesSolver.java maven-debian-helper-1.5/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesSolver.java --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesSolver.java 2011-06-25 22:27:28.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesSolver.java 2012-01-25 21:05:47.000000000 +0000 @@ -26,16 +26,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; -import java.util.StringTokenizer; -import java.util.TreeSet; +import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; @@ -89,6 +80,9 @@ private static final String[][] PLUGINS_THAT_CAN_BE_IGNORED = { {"org.apache.maven.plugins", "maven-ant-plugin"}, {"org.apache.maven.plugins", "maven-assembly-plugin"}, + {"org.apache.maven.plugins", "maven-enforcer-plugin"}, + {"org.apache.maven.plugins", "maven-gpg-plugin"}, + {"org.apache.rat", "apache-rat-plugin"}, {"org.codehaus.mojo", "buildnumber-maven-plugin"}, {"org.apache.maven.plugins", "maven-verifier-plugin"}, {"org.codehaus.mojo", "findbugs-maven-plugin"}, @@ -156,16 +150,16 @@ protected File mavenRepo = new File("/usr/share/maven-repo"); protected boolean exploreProjects; private Repository repository; - private List issues = new ArrayList(); - private List projectPoms = new ArrayList(); - private List toResolve = new ArrayList(); - private Set knownProjectDependencies = new TreeSet(); - private Set ignoredDependencies = new TreeSet(); - private Set notIgnoredDependencies = new TreeSet(); - private Set compileDepends = new TreeSet(); - private Set testDepends = new TreeSet(); - private Set runtimeDepends = new TreeSet(); - private Set optionalDepends = new TreeSet(); + private List issues = new ArrayList(); + private List projectPoms = new ArrayList(); + private List toResolve = new ArrayList(); + private Set knownProjectDependencies = new TreeSet(); + private Set ignoredDependencies = new TreeSet(); + private Set notIgnoredDependencies = new TreeSet(); + private Set compileDepends = new TreeSet(); + private Set testDepends = new TreeSet(); + private Set runtimeDepends = new TreeSet(); + private Set optionalDepends = new TreeSet(); private DependencyRuleSet cleanIgnoreRules = new DependencyRuleSet("Ignore rules to be applied during the Maven clean phase", new File("debian/maven.cleanIgnoreRules")); private boolean offline; @@ -175,17 +169,18 @@ private boolean askedToFilterModules = false; private boolean filterModules = false; private boolean verbose = false; - private Map pomInfoCache = new HashMap(); + private Map pomInfoCache = new HashMap(); // Keep the previous selected rule for a given version - private Map versionToRules = new HashMap(); + private Map versionToRules = new HashMap(); // Keep the list of known files and their package - private Map filesInPackages = new HashMap(); + private Map filesInPackages = new HashMap(); // Keep the list of packages and dependencies - private Map versionedPackagesAndDependencies = new HashMap(); - private List defaultRules = new ArrayList(); + private Map versionedPackagesAndDependencies = new HashMap(); + private List defaultRules = new ArrayList(); public DependenciesSolver() { pomTransformer.setVerbose(true); + pomTransformer.setFixVersions(false); pomTransformer.getRules().setWarnRulesFileNotFound(false); pomTransformer.getRules().setDescription(readResource("maven.rules.description")); pomTransformer.getIgnoreRules().setDescription(readResource("maven.ignoreRules.description")); @@ -254,11 +249,11 @@ } private boolean containsPlugin(String[][] pluginDefinitions, Dependency plugin) { - for (int i = 0; i < pluginDefinitions.length; i++) { - if (!plugin.getGroupId().equals(pluginDefinitions[i][0])) { + for (String[] pluginDefinition : pluginDefinitions) { + if (!plugin.getGroupId().equals(pluginDefinition[0])) { continue; } - if (plugin.getArtifactId().equals(pluginDefinitions[i][1])) { + if (plugin.getArtifactId().equals(pluginDefinition[1])) { return true; } } @@ -275,8 +270,7 @@ private boolean isDefaultMavenPlugin(Dependency dependency) { if (getRepository() != null && getRepository().getSuperPOM() != null) { - for (Iterator i = getRepository().getSuperPOM().getPluginManagement().iterator(); i.hasNext();) { - Dependency defaultPlugin = (Dependency) i.next(); + for (Dependency defaultPlugin : getRepository().getSuperPOM().getPluginManagement()) { if (defaultPlugin.equalsIgnoreVersion(dependency)) { return true; } @@ -372,16 +366,10 @@ } public void saveMavenRules() { - // Don't save implicit rules - pomTransformer.getRules().remove(DependencyRule.TO_DEBIAN_VERSION_RULE); - pomTransformer.getRules().remove(DependencyRule.MAVEN_PLUGINS_KEEP_VERSION_RULE); pomTransformer.getRules().save(); } public void saveMavenPublishedRules() { - // Don't save implicit rules - pomTransformer.getPublishedRules().remove(DependencyRule.TO_DEBIAN_VERSION_RULE); - pomTransformer.getPublishedRules().remove(DependencyRule.MAVEN_PLUGINS_KEEP_VERSION_RULE); pomTransformer.getPublishedRules().save(); } @@ -409,11 +397,10 @@ depVars.put("maven.OptionalDepends", toString(optionalDepends)); if (generateJavadoc) { System.out.println("Checking dependencies for documentation packages..."); - Set docRuntimeDepends = new TreeSet(); + Set docRuntimeDepends = new TreeSet(); docRuntimeDepends.add("default-jdk-doc"); - for (Iterator i = runtimeDepends.iterator(); i.hasNext();) { - String dependency = (String) i.next(); - Dependency runtimeDependency = (Dependency) versionedPackagesAndDependencies.get(dependency); + for (String dependency : runtimeDepends) { + Dependency runtimeDependency = versionedPackagesAndDependencies.get(dependency); if (dependency.indexOf(' ') > 0) { dependency = dependency.substring(0, dependency.indexOf(' ')); } @@ -425,10 +412,9 @@ docRuntimeDepends.add(docPkg); } } - Set docOptionalDepends = new TreeSet(); - for (Iterator i = optionalDepends.iterator(); i.hasNext();) { - String dependency = (String) i.next(); - Dependency optionalDependency = (Dependency) versionedPackagesAndDependencies.get(dependency); + Set docOptionalDepends = new TreeSet(); + for (String dependency : optionalDepends) { + Dependency optionalDependency = versionedPackagesAndDependencies.get(dependency); if (dependency.indexOf(' ') > 0) { dependency = dependency.substring(0, dependency.indexOf(' ')); } @@ -452,16 +438,15 @@ BufferedWriter out = new BufferedWriter(fstream); out.write("#List of dependencies for " + packageName + ", generated for use by debian/control"); out.write("\n"); - Set propertiesNames = depVars.stringPropertyNames(); + Set propertiesNames = depVars.stringPropertyNames(); if (propertiesNames != null) { - for (Iterator i = propertiesNames.iterator(); i.hasNext();) { - String propName = (String) i.next(); - StringBuffer sb = new StringBuffer(); - sb.append(propName); - sb.append("="); - sb.append(depVars.get(propName)); - sb.append("\n"); - out.write(sb.toString()); + for (String propName : propertiesNames) { + StringBuffer sb = new StringBuffer(); + sb.append(propName); + sb.append("="); + sb.append(depVars.get(propName)); + sb.append("\n"); + out.write(sb.toString()); } } out.close(); @@ -508,10 +493,36 @@ public void setOutputDirectory(File outputDirectory) { this.outputDirectory = outputDirectory; - pomTransformer.getRules().setRulesFile(new File(outputDirectory, "maven.rules")); - pomTransformer.getIgnoreRules().setRulesFile(new File(outputDirectory, "maven.ignoreRules")); - pomTransformer.getPublishedRules().setRulesFile(new File(outputDirectory, "maven.publishedRules")); - cleanIgnoreRules.setRulesFile(new File(outputDirectory, "maven.cleanIgnoreRules")); + File rulesFile = new File(outputDirectory, "maven.rules"); + if (rulesFile.exists() && verbose) { + System.out.println("Use existing rules:"); + } + pomTransformer.getRules().setRulesFile(rulesFile); + + File ignoreRulesFile = new File(outputDirectory, "maven.ignoreRules"); + if (ignoreRulesFile.exists() && verbose) { + System.out.println(); + System.out.println("Use existing ignore rules:"); + } + pomTransformer.getIgnoreRules().setRulesFile(ignoreRulesFile); + + File publishedRulesFile = new File(outputDirectory, "maven.publishedRules"); + if (publishedRulesFile.exists() && verbose) { + System.out.println(); + System.out.println("Use existing published rules:"); + } + pomTransformer.getPublishedRules().setRulesFile(publishedRulesFile); + + File cleanIgnoreRules = new File(outputDirectory, "maven.cleanIgnoreRules"); + if (cleanIgnoreRules.exists() && verbose) { + System.out.println(); + System.out.println("Use existing clean ignore rules:"); + } + this.cleanIgnoreRules.setRulesFile(cleanIgnoreRules); + + if (verbose) { + System.out.println(); + } } public String getPackageName() { @@ -530,7 +541,7 @@ this.packageType = packageType; } - public List getIssues() { + public List getIssues() { return issues; } @@ -586,8 +597,7 @@ if (!issues.isEmpty()) { System.err.println("ERROR:"); - for (Iterator i = issues.iterator(); i.hasNext();) { - String issue = (String) i.next(); + for (String issue : issues) { System.err.println(issue); } System.err.println("--------"); @@ -601,23 +611,32 @@ } String pomRelPath = projectPom.getAbsolutePath().substring(baseDir.getAbsolutePath().length() + 1); + System.out.println("Analysing " + pomRelPath + "..."); try { POMInfo pom = getPOM(projectPom); - pom.setProperties(new HashMap()); + pom.setProperties(new HashMap()); pom.getProperties().put("debian.package", getPackageName()); if (getPOMOptions(projectPom).isNoParent()) { pom.setParent(null); - } else if (pom.getParent() != null) { + } else if (pom.getParent() != null && !pom.getParent().isSuperPom()) { boolean oldNoParent = getPOMOptions(projectPom).isNoParent(); // Don't mark the parent dependency as 'build time' dependency because once installed, // the POM for this project will always need the parent POM to be available - pom.setParent(resolveDependency(pom.getParent(), projectPom, false, false, false, true)); + Dependency parent = resolveDependency(pom.getParent(), projectPom, false, false, false, true); + // The user may have set or unset the --no-parent option, if so we update the POM to include or not the + // parent according to the user's choice if (getPOMOptions(projectPom).isNoParent() != oldNoParent) { resetPOM(projectPom); pom = getPOM(projectPom); } + pom.setParent(parent); + // If the parent is found, search the parent POM and update current POM + if (parent != null) { + POMInfo parentPOM = getRepository().searchMatchingPOM(parent); + pom.setParentPOM(parentPOM); + } } getRepository().registerPom(projectPom, pom); @@ -664,11 +683,11 @@ } } + projectPoms.add(pom.getThisPom()); + // Previous rule from another run boolean explicitlyMentionedInRules = false; - for (Iterator i = pomTransformer.getRules().findMatchingRules(pom.getThisPom()).iterator(); - i.hasNext(); ) { - DependencyRule previousRule = (DependencyRule) i.next(); + for (DependencyRule previousRule : pomTransformer.getRules().findMatchingRules(pom.getThisPom())) { if (!previousRule.equals(DependencyRule.TO_DEBIAN_VERSION_RULE) && !previousRule.equals(DependencyRule.MAVEN_PLUGINS_KEEP_VERSION_RULE) && previousRule.matches(pom.getThisPom())) { @@ -682,7 +701,7 @@ System.out.println("Version of " + pom.getThisPom().getGroupId() + ":" + pom.getThisPom().getArtifactId() + " is " + version); System.out.println("Choose how it will be transformed:"); - List choices = new ArrayList(); + List choices = new ArrayList(); if (versionToRules.containsKey(version)) { choices.add(versionToRules.get(version)); @@ -700,16 +719,15 @@ choices.add(mainVersionRule); } } - for (Iterator i = defaultRules.iterator(); i.hasNext(); ) { - Rule rule = (Rule) i.next(); + for (Rule rule : defaultRules) { if (!choices.contains(rule)) { choices.add(rule); } } int count = 1; - for (Iterator i = choices.iterator(); i.hasNext(); count++) { - Rule rule = (Rule) i.next(); + for (Iterator i = choices.iterator(); i.hasNext(); count++) { + Rule rule = i.next(); if (count == 1) { System.out.print("[1]"); } else { @@ -725,7 +743,7 @@ } catch (Exception ignore) { } - Rule selectedRule = (Rule) choices.get(choice - 1); + Rule selectedRule = choices.get(choice - 1); versionToRules.put(version, selectedRule); if (selectedRule.getPattern().equals("CUSTOM")) { System.out.println("Enter the pattern for your custom rule (in the form s/regex/replace/)"); @@ -739,21 +757,37 @@ String dependencyRule = pom.getThisPom().getGroupId() + " " + pom.getThisPom().getArtifactId() + " " + pom.getThisPom().getType() + " " + selectedRule.toString(); pomTransformer.getRules().add(new DependencyRule(dependencyRule)); + POMInfo transformedPom = pom.newPOMFromRules(pomTransformer.getRules().getRules(), getRepository()); + getRepository().registerPom(projectPom, transformedPom); + projectPoms.add(transformedPom.getThisPom()); + + + if ("bundle".equals(pom.getThisPom().getType())) { + System.out.println(pom.getThisPom().getGroupId() + ":" + pom.getThisPom().getArtifactId() + + " is a bundle."); + System.out.println("Inform mh_make that dependencies of type jar which may match this library should be transformed into bundles automatically?"); + System.out.print("[y]/n > "); + s = readLine().toLowerCase(); + boolean transformJarsIntoBundle = !s.startsWith("n"); + if (transformJarsIntoBundle) { + String transformBundleRule = pom.getThisPom().getGroupId() + " " + pom.getThisPom().getArtifactId() + + " s/jar/bundle/ " + selectedRule.toString(); + pomTransformer.getPublishedRules().add(new DependencyRule(transformBundleRule)); + } + } } - if (pom.getParent() != null) { + if (pom.getParent() != null && !pom.getParent().isSuperPom()) { POMInfo parentPom = getRepository().searchMatchingPOM(pom.getParent()); if (parentPom == null || parentPom.equals(getRepository().getSuperPOM())) { getPOMOptions(projectPom).setNoParent(true); } if (!baseDir.equals(projectPom.getParentFile())) { -// System.out.println("Checking the parent dependency in the sub project " + projectPom); - resolveDependenciesLater(projectPom, POMInfo.PARENT, false, false, false); + System.out.println("Checking the parent dependency in the sub project " + pomRelPath); + resolveDependency(pom.getParent(), projectPom, false, false, false, true); } } - projectPoms.add(pom.getThisPom()); - resolveDependenciesLater(projectPom, POMInfo.DEPENDENCIES, false, false, false); resolveDependenciesLater(projectPom, POMInfo.DEPENDENCY_MANAGEMENT_LIST, false, false, true); resolveDependenciesLater(projectPom, POMInfo.PLUGINS, true, true, false); @@ -770,20 +804,20 @@ filterModules = s.startsWith("n"); askedToFilterModules = true; } - for (Iterator i = pom.getModules().iterator(); i.hasNext();) { - String module = (String) i.next(); + for (String module : pom.getModules()) { File modulePom = new File(projectPom.getParent(), module + "/pom.xml"); resolveDependencies(modulePom); } } } catch (Exception ex) { log.log(Level.SEVERE, "Error while resolving " + projectPom + ": " + ex.getMessage()); + log.log(Level.SEVERE, "", ex); System.exit(1); } } private POMInfo getPOM(File projectPom) throws XMLStreamException, IOException { - POMInfo info = (POMInfo) pomInfoCache.get(projectPom.getAbsolutePath()); + POMInfo info = pomInfoCache.get(projectPom.getAbsolutePath()); if (info != null) { return info; } @@ -821,8 +855,8 @@ } private void resolveDependenciesNow() { - for (Iterator i = toResolve.iterator(); i.hasNext();) { - ToResolve tr = (ToResolve) i.next(); + for (Iterator i = toResolve.iterator(); i.hasNext();) { + ToResolve tr = i.next(); tr.resolve(); i.remove(); } @@ -833,30 +867,33 @@ } private void resolveDependencies(File sourcePom, String listType, boolean buildTime, boolean mavenExtension, boolean management) throws Exception { - List poms = getPOM(sourcePom).getAllDependencies(listType); + POMInfo pom = getPOM(sourcePom); + List dependenciesByType = pom.getAllDependencies(listType); - for (Iterator i = poms.iterator(); i.hasNext();) { - Dependency dependency = (Dependency) i.next(); + for (Dependency dependency : dependenciesByType) { resolveDependency(dependency, sourcePom, buildTime, mavenExtension, management); } } - private Dependency resolveParentDependency(Dependency dependency, File sourcePom, boolean buildTime) throws DependencyNotFoundException { - return resolveDependency(dependency, sourcePom, buildTime, false, false); - } - public Dependency resolveDependency(Dependency dependency, File sourcePom, boolean buildTime, boolean mavenExtension, boolean management) throws DependencyNotFoundException { return resolveDependency(dependency, sourcePom, buildTime, mavenExtension, management, false); } private Dependency resolveDependency(Dependency dependency, File sourcePom, boolean buildTime, boolean mavenExtension, boolean management, boolean resolvingParent) throws DependencyNotFoundException { + if (containsDependencyIgnoreVersion(knownProjectDependencies, dependency)) { + return dependency; + } + if (containsDependencyIgnoreVersion(ignoredDependencies, dependency) || - containsDependencyIgnoreVersion(knownProjectDependencies, dependency) || (management && isDefaultMavenPlugin(dependency))) { return null; } + if (resolvingParent && dependency.isSuperPom()) { + return dependency; + } + String sourcePomLoc = sourcePom.getAbsolutePath(); String baseDirPath = baseDir.getAbsolutePath(); sourcePomLoc = sourcePomLoc.substring(baseDirPath.length() + 1, sourcePomLoc.length()); @@ -924,7 +961,7 @@ // as this may be useful later - but never fail if the dependency is not found. POMInfo pom = getRepository().searchMatchingPOM(dependency); if (pom != null) { - String mavenRules = (String) pom.getProperties().get("debian.mavenRules"); + String mavenRules = pom.getProperties().get("debian.mavenRules"); if (mavenRules != null) { StringTokenizer st = new StringTokenizer(mavenRules, ","); while (st.hasMoreTokens()) { @@ -945,19 +982,26 @@ POMInfo pom = getRepository().searchMatchingPOM(dependency); try { - if (pom == null && dependency.getVersion() == null && getPOM(sourcePom).getParent() != null) { - String version = getPOM(sourcePom).getVersionFromManagementDependency(dependency); + if (pom == null && dependency.getVersion() == null) { + POMInfo containerPom = getPOM(sourcePom); + String version = containerPom.getVersionFromManagementDependency(dependency); dependency.setVersion(version); - pom = getRepository().searchMatchingPOM(dependency); + if (version != null) { + pom = getRepository().searchMatchingPOM(dependency); + } else { + System.out.println("In " + sourcePomLoc + ", cannot find the version for dependency " + dependency + " from this POM or its parent POMs"); + if (getPOMOptions(sourcePom).isNoParent()) { + System.out.println("[warning] Option --no-parent has been set for POM file " + sourcePomLoc + ", maybe it was not a good idea and you should first package the parent POM " + containerPom.getParent()); + } + } } } catch (Exception e) { e.printStackTrace(); } if (pom == null && dependency.getVersion() != null) { - List poms = getRepository().searchMatchingPOMsIgnoreVersion(dependency); - for (Iterator i = poms.iterator(); i.hasNext(); ) { - POMInfo potentialPom = (POMInfo) i.next(); - String mavenRules = (String) potentialPom.getProperties().get("debian.mavenRules"); + List poms = getRepository().searchMatchingPOMsIgnoreVersion(dependency); + for (POMInfo potentialPom : poms) { + String mavenRules = potentialPom.getProperties().get("debian.mavenRules"); if (mavenRules != null) { StringTokenizer st = new StringTokenizer(mavenRules, ","); while (st.hasMoreTokens()) { @@ -977,6 +1021,8 @@ dependency.setVersion(version + ".0"); pom = getRepository().searchMatchingPOM(dependency); if (pom != null) { + System.out.println("Use best guess version: " + dependency.getVersion() + " for " + + dependency.getGroupId() + ":" + dependency.getArtifactId()); break; } dependency.setVersion(null); @@ -984,102 +1030,166 @@ } if (pom == null && "maven-plugin".equals(dependency.getType())) { - List matchingPoms = getRepository().searchMatchingPOMsIgnoreVersion(dependency); + List matchingPoms = getRepository().searchMatchingPOMsIgnoreVersion(dependency); if (matchingPoms.size() > 1) { issues.add(sourcePomLoc + ": More than one version matches the plugin " + dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion()); } if (!matchingPoms.isEmpty()) { - pom = (POMInfo) matchingPoms.get(0); + pom = matchingPoms.get(0); // Don't add a rule to force the version of a Maven plugin, it's now done // automatically at build time } } + + // Ignore fast cases + if (pom == null) { + if (management) { + if (verbose) { + System.out.println("[skipped dependency or plugin management]"); + } + return null; + } else if ("maven-plugin".equals(dependency.getType()) && packageType.equals("ant")) { + if (verbose) { + System.out.println("[skipped - not used in Ant build]"); + } + return null; + } + } - // In case, we didn't found anything for "jar" packaging type, just check for a "bundle" type inside repository. + // In case we didn't find anything for "jar" packaging type, just check for a "bundle" type inside repository. + // Some jars have been upgraded to OSGi bundles as OSGi metadata has been added to them. + // // drazzib: I'm not sure this is really the right way to fix that (ie. maybe we should install "bundle" artifacts // directly with "jar" type inside Debian ?). + // + // ludovicc: a complex issue, I believe that libraries which evolve from a jar type to a bundle type should + // inform packagers with a rule of the form + // ' s/jar/bundle/ ' + // in other words, the packager of the library should add a published rule which will transform matching + // libraries from jar type into bundle types, and apply as well the version substitution (for example to 2.x) + // for Debian. + // if (pom == null && "jar".equals(dependency.getType())) { if (verbose) { - System.out.println("[check with bundle dependency type]"); + System.out.println("[check dependency with bundle type]"); + } + Dependency bundleDependency = new Dependency(dependency); + bundleDependency.setType("bundle"); + pom = getRepository().searchMatchingPOM(bundleDependency); + if (pom != null) { + dependency = bundleDependency; + for (DependencyRule rule: pom.getPublishedRules()) { + if (rule.matches(dependency)) { + Dependency transformed = rule.apply(dependency); + if (transformed.getGroupId().equals(dependency.getGroupId()) + && transformed.getArtifactId().equals(dependency.getArtifactId()) + && transformed.getType().equals(dependency.getType())) { + String newRule = pom.getThisPom().getGroupId() + " " + pom.getThisPom().getArtifactId() + + " s/jar/bundle/ " + rule.getVersionRule().toString(); + pomTransformer.getRules().add(new DependencyRule(newRule)); + } + } + } } - dependency.setType("bundle"); - pom = getRepository().searchMatchingPOM(dependency); } if (pom == null) { - if (management) { + if (!ignoreDependency) { + if (resolvingParent) { + boolean noParent = askIgnoreDependency(sourcePomLoc, dependency, + "The parent POM cannot be found in the Maven repository for Debian. Ignore it?"); + getPOMOptions(sourcePom).setNoParent(noParent); + if (noParent) { + if (verbose) { + System.out.println("[no-parent]"); + } + return null; + } + } else if (isDocumentationOrReportPlugin(dependency)) { + ignoreDependency = askIgnoreDependency(sourcePomLoc, dependency, + "This documentation or report plugin cannot be found in the Maven repository for Debian. Ignore this plugin?"); + } else if ("maven-plugin".equals(dependency.getType())) { + ignoreDependency = askIgnoreDependency(sourcePomLoc, dependency, "This plugin cannot be found in the Debian Maven repository. Ignore this plugin?", false); + if (!ignoreDependency) { + issues.add(sourcePomLoc + ": Plugin is not packaged in the Maven repository for Debian: " + dependency.getGroupId() + ":" + + dependency.getArtifactId() + ":" + dependency.getVersion()); + } + } else { + ignoreDependency = askIgnoreDependency(sourcePomLoc, dependency, "This dependency cannot be found in the Debian Maven repository. Ignore this dependency?", false); + if (!ignoreDependency) { + issues.add(sourcePomLoc + ": Dependency is not packaged in the Maven repository for Debian: " + dependency.getGroupId() + ":" + + dependency.getArtifactId() + ":" + dependency.getVersion()); + } + } + } + if (ignoreDependency) { + ignoredDependencies.add(dependency); + String ruleDef = dependency.getGroupId() + " " + dependency.getArtifactId() + " * *"; + pomTransformer.getIgnoreRules().add(new DependencyRule(ruleDef)); if (verbose) { - System.out.println("[skipped dependency or plugin management]"); + System.out.println("[ignored]"); } return null; - } else if ("maven-plugin".equals(dependency.getType()) && packageType.equals("ant")) { - if (verbose) { - System.out.println("[skipped - not used in Ant build]"); - } - return null; } else { - if (!ignoreDependency) { - if (resolvingParent) { - boolean noParent = askIgnoreDependency(sourcePomLoc, dependency, - "The parent POM cannot be found in the Maven repository for Debian. Ignore it?"); - getPOMOptions(sourcePom).setNoParent(noParent); - if (noParent) { - if (verbose) { - System.out.println("[no-parent]"); - } - return null; - } - } else if (isDocumentationOrReportPlugin(dependency)) { - ignoreDependency = askIgnoreDependency(sourcePomLoc, dependency, - "This documentation or report plugin cannot be found in the Maven repository for Debian. Ignore this plugin?"); - } else if ("maven-plugin".equals(dependency.getType())) { - ignoreDependency = askIgnoreDependency(sourcePomLoc, dependency, "This plugin cannot be found in the Debian Maven repository. Ignore this plugin?", false); - if (!ignoreDependency) { - issues.add(sourcePomLoc + ": Plugin is not packaged in the Maven repository for Debian: " + dependency.getGroupId() + ":" - + dependency.getArtifactId() + ":" + dependency.getVersion()); - } + String pkg = searchPkg(new File("/usr/share/maven-repo/" + + dependency.getGroupId().replace('.', '/') + + "/" + dependency.getArtifactId()), ".pom"); + if (pkg != null) { + String installedVersion = getPackageVersion(pkg, true); + if (installedVersion != null) { + System.out.println("[error] Package " + pkg + " (" + installedVersion + ") is already installed and contains a possible match," ); + System.out.println("but I cannot resolve library " + dependency + " in it."); + System.out.println("[error] Please check manually that the library is up to date, otherwise it may be necessary to package version " + + dependency.getVersion() + " in Debian."); } else { - ignoreDependency = askIgnoreDependency(sourcePomLoc, dependency, "This dependency cannot be found in the Debian Maven repository. Ignore this dependency?", false); - if (!ignoreDependency) { - issues.add(sourcePomLoc + ": Dependency is not packaged in the Maven repository for Debian: " + dependency.getGroupId() + ":" - + dependency.getArtifactId() + ":" + dependency.getVersion()); - } + System.out.println("[warning] Please install the missing dependency. Run the following command in another terminal:"); + System.out.println(" sudo apt-get install " + pkg); } } - if (ignoreDependency) { - ignoredDependencies.add(dependency); - String ruleDef = dependency.getGroupId() + " " + dependency.getArtifactId() + " * *"; - pomTransformer.getIgnoreRules().add(new DependencyRule(ruleDef)); - if (verbose) { - System.out.println("[ignored]"); - } - return null; - } else { - String pkg = searchPkg(new File("/usr/share/maven-repo/" - + dependency.getGroupId().replace('.', '/') - + "/" + dependency.getArtifactId())); + if (interactive && pkg == null) { + pkg = searchPkg(new File("/usr/share/java/" + dependency.getArtifactId() + ".jar")); if (pkg != null) { - System.out.println("Please install the missing dependency using"); - System.out.println(" sudo apt-get install " + pkg); - } - if (interactive) { - System.out.println("Try again to resolve the dependency?"); - System.out.print("[y]/n > "); - String s = readLine().trim().toLowerCase(); - if (!s.startsWith("n")) { - System.out.println("Rescanning /usr/share/maven-repo..."); - pomTransformer.getRepository().scan(); - return resolveDependency(dependency, sourcePom, buildTime, mavenExtension, management); - } + System.out.println("[error] Package " + pkg + " does not contain Maven dependency " + dependency + " but there seem to be a match"); + System.out.println("If the package contains already Maven artifacts but the names don't match, try to enter a substitution rule"); + System.out.println("of the form s/groupId/newGroupId/ s/artifactId/newArtifactId/ jar s/version/newVersion/ here:"); + System.out.print("> "); + String newRule = readLine().trim(); + if (!newRule.isEmpty()) { + DependencyRule userRule = new DependencyRule(newRule); + pomTransformer.getRules().add(userRule); + System.out.println("Please suggest the maintainer of package " + pkg + " to add this rule to debian/maven.publishedRules"); + return resolveDependency(dependency.applyRules(Arrays.asList(userRule)), sourcePom, buildTime, mavenExtension, management); + } + } else { + System.out.println("[error] Cannot resolve Maven dependency " + dependency + ". If you know a package that contains a compatible dependency,"); + System.out.println("Try to enter a substitution rule of the form s/groupId/newGroupId/ s/artifactId/newArtifactId/ jar s/version/newVersion/ here:"); + System.out.print("> "); + String newRule = readLine().trim(); + if (!newRule.isEmpty()) { + DependencyRule userRule = new DependencyRule(newRule); + pomTransformer.getRules().add(userRule); + return resolveDependency(dependency.applyRules(Arrays.asList(userRule)), sourcePom, buildTime, mavenExtension, management); + } } - if (verbose) { - System.out.println("[error]"); + } + if (interactive) { + System.out.println("Try again to resolve the dependency?"); + System.out.print("[y]/n > "); + String s = readLine().trim().toLowerCase(); + if (!s.startsWith("n")) { + System.out.println("Rescanning /usr/share/maven-repo..."); + pomTransformer.getRepository().scan(); + // Clear caches + filesInPackages.clear(); + return resolveDependency(dependency, sourcePom, buildTime, mavenExtension, management); } - throw new DependencyNotFoundException(dependency); } + if (verbose) { + System.out.println("[error]"); + } + throw new DependencyNotFoundException(dependency); } - } // Handle the case of Maven plugins built and used in a multi-module build: @@ -1091,18 +1201,10 @@ } // Discover the library to import for the dependency - String library = null; - if (pom.getProperties() != null) { - library = (String) pom.getProperties().get("debian.package"); - } - if (library == null) { - issues.add(sourcePomLoc + ": Dependency is missing the Debian properties in its POM: " + dependency.getGroupId() + ":" - + dependency.getArtifactId() + ":" + dependency.getVersion()); - File pomFile = new File(mavenRepo, dependency.getGroupId().replace(".", "/") + "/" + dependency.getArtifactId() + "/" + dependency.getVersion() + "/" + dependency.getArtifactId() + "-" + dependency.getVersion() + ".pom"); - library = searchPkg(pomFile); - } - if (library != null && !library.equals(getPackageName())) { - String libraryWithVersionConstraint = library; + String pkg = getPackage(pom, sourcePomLoc); + + if (pkg != null && !pkg.equals(getPackageName())) { + String libraryWithVersionConstraint = pkg; String version = dependency.getVersion(); if (version == null || (pom.getOriginalVersion() != null && version.compareTo(pom.getOriginalVersion()) > 0)) { version = pom.getOriginalVersion(); @@ -1138,7 +1240,7 @@ versionedPackagesAndDependencies.put(libraryWithVersionConstraint, dependency); } - String mavenRules = (String) pom.getProperties().get("debian.mavenRules"); + String mavenRules = pom.getProperties().get("debian.mavenRules"); if (mavenRules != null) { StringTokenizer st = new StringTokenizer(mavenRules, ","); while (st.hasMoreTokens()) { @@ -1147,14 +1249,56 @@ } } if (verbose) { + System.out.println("Dependency " + dependency + " found in package " + pkg); System.out.println("[ok]"); + System.out.println(); + } + + if (resolvingParent) { + try { + POMInfo containerPom = getPOM(sourcePom); + containerPom.setParentPOM(pom); + + } catch (Exception e) { + e.printStackTrace(); + } } return pom.getThisPom(); } - private boolean containsDependencyIgnoreVersion(Collection dependencies, Dependency dependency) { - for (Iterator j = dependencies.iterator(); j.hasNext();) { - Dependency ignoredDependency = (Dependency) j.next(); + private String getPackage(POMInfo pom, String sourcePomLoc) { + String pkg = null; + if (pom.getProperties() != null) { + pkg = pom.getProperties().get("debian.package"); + } + if (pkg == null) { + Dependency dependency = pom.getThisPom(); + issues.add(sourcePomLoc + ": Dependency is missing the Debian properties in its POM: " + dependency.getGroupId() + ":" + + dependency.getArtifactId() + ":" + dependency.getVersion()); + File pomFile = new File(mavenRepo, dependency.getGroupId().replace(".", "/") + "/" + dependency.getArtifactId() + "/" + dependency.getVersion() + "/" + dependency.getArtifactId() + "-" + dependency.getVersion() + ".pom"); + pkg = searchPkg(pomFile); + } + return pkg; + } + + private String getPackageVersion(String pkg, boolean onlyInstalled) { + GetPackageVersionResult packageResult = new GetPackageVersionResult(); + executeProcess(new String[]{"dpkg", "--status", pkg}, packageResult); + if (packageResult.getResult() != null) { + return packageResult.getResult(); + } + if (!onlyInstalled) { + GetChangelogVersionResult versionResult = new GetChangelogVersionResult(pkg); + executeProcess(new String[]{"apt-get", "--no-act", "--verbose-versions", "install", pkg}, versionResult); + if (versionResult.getResult() != null) { + return versionResult.getResult(); + } + } + return null; + } + + private boolean containsDependencyIgnoreVersion(Collection dependencies, Dependency dependency) { + for (Dependency ignoredDependency : dependencies) { if (ignoredDependency.equalsIgnoreVersion(dependency)) { return true; } @@ -1162,17 +1306,27 @@ return false; } + private String searchPkg(File dir, String extension) { + GetFilteredPackageResult packageResult = new GetFilteredPackageResult(extension); + File cacheId = new File(dir, "_" + extension); + return searchPkg(cacheId, dir, packageResult); + } + private String searchPkg(File file) { - if (filesInPackages.containsKey(file)) { - return (String) filesInPackages.get(file); + GetPackageResult packageResult = new GetPackageResult(); + return searchPkg(file, file, packageResult); + } + + private String searchPkg(File cacheId, File fileToSearch, GetPackageResult packageResult) { + if (filesInPackages.containsKey(cacheId)) { + return filesInPackages.get(cacheId); } - GetPackageResult packageResult = new GetPackageResult(); - executeProcess(new String[]{"dpkg", "--search", file.getAbsolutePath()}, packageResult); + executeProcess(new String[]{"dpkg", "--search", fileToSearch.getAbsolutePath()}, packageResult); if (packageResult.getResult() != null) { String pkg = packageResult.getResult(); if (pkg != null) { - filesInPackages.put(file, pkg); + filesInPackages.put(cacheId, pkg); } return pkg; } @@ -1185,10 +1339,10 @@ if (!new File("/usr/bin/apt-file").exists()) { return null; } - executeProcess(new String[]{"apt-file", "search", file.getAbsolutePath()}, packageResult); + executeProcess(new String[]{"apt-file", "search", fileToSearch.getAbsolutePath()}, packageResult); String pkg = packageResult.getResult(); if (pkg != null) { - filesInPackages.put(file, pkg); + filesInPackages.put(cacheId, pkg); } return pkg; } @@ -1198,8 +1352,7 @@ ProcessBuilder pb = new ProcessBuilder(cmd); pb.redirectErrorStream(true); System.out.print("> "); - for (int i = 0; i < cmd.length; i++) { - String arg = cmd[i]; + for (String arg : cmd) { System.out.print(arg + " "); } System.out.println(); @@ -1224,9 +1377,9 @@ LineNumberReader aptIn = new LineNumberReader(br); String line; while ((line = aptIn.readLine()) != null) { - System.out.println(line); handler.newLine(line); } + aptIn.close(); } catch (IOException ex) { ex.printStackTrace(); } @@ -1249,10 +1402,10 @@ } } - private String toString(Set s) { + private String toString(Set s) { StringBuffer sb = new StringBuffer(); - for (Iterator i = s.iterator(); i.hasNext();) { - String st = (String) i.next(); + for (Iterator i = s.iterator(); i.hasNext();) { + String st = i.next(); sb.append(st); if (i.hasNext()) { sb.append(", "); @@ -1277,6 +1430,9 @@ private String result; public void newLine(String line) { + if (result != null) { + return; + } int colon = line.indexOf(':'); if (colon > 0 && line.indexOf(' ') > colon) { result = line.substring(0, colon); @@ -1284,18 +1440,83 @@ if (!result.equals(result.trim()) || result.startsWith("dpkg")) { result = null; } else { - System.out.println("Found " + result); + result = foundResult(result); } } } + protected String foundResult(String potentialMatch) { + System.out.println("Found " + potentialMatch); + return potentialMatch; + } + public String getResult() { return result; } - public void setResult(String result) { - this.result = result; + } + + static class GetFilteredPackageResult extends GetPackageResult { + private final String extension; + + public GetFilteredPackageResult(String extension) { + this.extension = extension; + } + + protected String foundResult(String potentialMatch) { + if (potentialMatch.endsWith(extension)) { + System.out.println("Found " + potentialMatch); + return potentialMatch; + } else { + return null; + } + } + + } + + static class GetPackageVersionResult implements OutputHandler { + + private String result; + + public void newLine(String line) { + if (result != null) { + return; + } + if (line.startsWith("Version:")) { + int space = line.indexOf(' '); + result = line.substring(space + 1, line.length()).trim(); + } } + + public String getResult() { + return result; + } + + } + + static class GetChangelogVersionResult implements OutputHandler { + + private String result; + private final Pattern pattern; + + public GetChangelogVersionResult(String pkg) { + this.pattern = Pattern.compile(pkg + "\\s\\(.*\\)"); + } + + public void newLine(String line) { + if (result != null) { + return; + } + Matcher match = pattern.matcher(line); + if (match.find()) { + result = match.group(1); + } + } + + public String getResult() { + return result; + } + } public static void main(String[] args) { @@ -1340,6 +1561,8 @@ String arg = args[i].trim(); if ("--verbose".equals(arg) || "-v".equals(arg)) { verbose = true; + } else if ("--debug".equals(arg)) { + log.setLevel(Level.FINEST); } else if (arg.startsWith("-p")) { debianPackage = arg.substring(2); } else if (arg.startsWith("--package=")) { diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/java/org/debian/maven/packager/GenerateDebianFilesMojo.java maven-debian-helper-1.5/maven-packager-utils/src/main/java/org/debian/maven/packager/GenerateDebianFilesMojo.java --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/java/org/debian/maven/packager/GenerateDebianFilesMojo.java 2011-06-12 19:32:46.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/java/org/debian/maven/packager/GenerateDebianFilesMojo.java 2012-01-25 21:05:47.000000000 +0000 @@ -22,15 +22,8 @@ import org.apache.maven.plugin.MojoExecutionException; import java.io.*; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.Iterator; -import java.util.List; -import java.util.Properties; -import java.util.Set; -import java.util.StringTokenizer; -import java.util.TreeSet; +import java.util.*; + import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.project.MavenProject; import org.apache.velocity.VelocityContext; @@ -142,6 +135,10 @@ controlTemplate = "control.ant.vm"; rulesTemplate = "rules.ant.vm"; } + // #638788: clean up email + if (email != null && email.indexOf('<') >= 0 && email.indexOf('>') >= 0) { + email = email.substring(email.indexOf('<') + 1, email.indexOf('>') - 1); + } try { Properties velocityProperties = new Properties(); @@ -155,7 +152,7 @@ context.put("packager", packager); context.put("packagerEmail", email); context.put("project", project); - context.put("collectedProjects", collectedProjects); + context.put("collectedProjects", wrapMavenProjects(collectedProjects)); context.put("runTests", Boolean.valueOf(runTests)); context.put("generateJavadoc", Boolean.valueOf(generateJavadoc)); @@ -267,20 +264,22 @@ if (substvarsFile.exists()) { Properties substvars = new Properties(); substvars.load(new FileReader(substvarsFile)); - List depends = new ArrayList(); - depends.addAll(split(substvars.getProperty("maven.CompileDepends"))); - depends.addAll(split(substvars.getProperty("maven.Depends"))); + List compileDepends = new ArrayList(); + compileDepends.addAll(split(substvars.getProperty("maven.CompileDepends"))); + compileDepends.addAll(split(substvars.getProperty("maven.Depends"))); + List buildDepends = new ArrayList(compileDepends); + List testDepends = new ArrayList(split(substvars.getProperty("maven.TestDepends"))); if (runTests) { - depends.addAll(split(substvars.getProperty("maven.TestDepends"))); + buildDepends.addAll(testDepends); } if (generateJavadoc) { - depends.addAll(split(substvars.getProperty("maven.DocDepends"))); - depends.addAll(split(substvars.getProperty("maven.DocOptionalDepends"))); + buildDepends.addAll(split(substvars.getProperty("maven.DocDepends"))); + buildDepends.addAll(split(substvars.getProperty("maven.DocOptionalDepends"))); } if ("maven".equals(packageType)) { boolean seenJavadocPlugin = false; // Remove dependencies that are implied by maven-debian-helper - for (Iterator i = depends.iterator(); i.hasNext();) { + for (Iterator i = buildDepends.iterator(); i.hasNext();) { String dependency = (String) i.next(); if (dependency.startsWith("libmaven-clean-plugin-java") || dependency.startsWith("libmaven-resources-plugin-java") || @@ -296,11 +295,11 @@ } } if (generateJavadoc && !seenJavadocPlugin) { - depends.add("libmaven-javadoc-plugin-java"); + buildDepends.add("libmaven-javadoc-plugin-java"); } } else if ("ant".equals(packageType)) { // Remove dependencies that are implied by ant packaging - for (Iterator i = depends.iterator(); i.hasNext(); ) { + for (Iterator i = buildDepends.iterator(); i.hasNext(); ) { String dependency = (String) i.next(); if (dependency.equals("ant") || dependency.startsWith("ant ") || @@ -308,23 +307,29 @@ i.remove(); } } - depends.remove("ant"); - depends.remove("ant-optional"); + buildDepends.remove("ant"); + buildDepends.remove("ant-optional"); } - context.put("compileDependencies", depends); + context.put("buildDependencies", buildDepends); context.put("runtimeDependencies", split(substvars.getProperty("maven.Depends"))); + context.put("testDependencies", split(substvars.getProperty("maven.TestDepends"))); context.put("optionalDependencies", split(substvars.getProperty("maven.OptionalDepends"))); context.put("javadocDependencies", split(substvars.getProperty("maven.DocDepends"))); context.put("javadocOptionalDependencies", split(substvars.getProperty("maven.DocOptionalDepends"))); if ("ant".equals(packageType)) { - Set buildJars = new TreeSet(); - for (Iterator i = depends.iterator(); i.hasNext();) { + Set compileJars = new TreeSet(); + for (Iterator i = compileDepends.iterator(); i.hasNext();) { String library = (String) i.next(); - buildJars.addAll(listSharedJars(library)); + compileJars.addAll(listSharedJars(library)); } - buildJars.add("ant-junit"); - context.put("buildJars", buildJars); + context.put("compileJars", compileJars); + Set testJars = new TreeSet(); + for (Iterator i = testDepends.iterator(); i.hasNext();) { + String library = (String) i.next(); + testJars.addAll(listSharedJars(library)); + } + context.put("testJars", testJars); } } else { System.err.println("Cannot find file " + substvarsFile); @@ -332,12 +337,19 @@ if ("ant".equals(packageType)) { ListOfPOMs listOfPOMs = new ListOfPOMs(new File(outputDirectory, binPackageName + ".poms")); - setupArtifactLocation(listOfPOMs, project); + ListOfPOMs listOfJavadocPOMs = null; + if (generateJavadoc && "ant".equals(packageType)) { + listOfJavadocPOMs = new ListOfPOMs(new File(outputDirectory, binPackageName + "-doc.poms")); + } + setupArtifactLocation(listOfPOMs, listOfJavadocPOMs, project); for (Iterator i = collectedProjects.iterator(); i.hasNext();) { MavenProject mavenProject = (MavenProject) i.next(); - setupArtifactLocation(listOfPOMs, mavenProject); + setupArtifactLocation(listOfPOMs, listOfJavadocPOMs, mavenProject); } listOfPOMs.save(); + if (listOfJavadocPOMs != null) { + listOfJavadocPOMs.save(); + } } String projectVersion = project.getVersion(); @@ -414,8 +426,13 @@ generateFile(context, rulesTemplate, new File("."), ".debianVersion"); if (generateJavadoc) { - generateFile(context, "java-doc.doc-base.api.vm", outputDirectory, binPackageName + "-doc.doc-base.api"); - generateFile(context, "java-doc.install.vm", outputDirectory, binPackageName + "-doc.install"); + if (project.getPackaging().equals("pom") && collectedProjects.size() > 1) { + generateFile(context, "java-doc.doc-base.api.multi.vm", outputDirectory, binPackageName + "-doc.doc-base.api"); + generateFile(context, "java-doc.install.multi.vm", outputDirectory, binPackageName + "-doc.install"); + } else { + generateFile(context, "java-doc.doc-base.api.vm", outputDirectory, binPackageName + "-doc.doc-base.api"); + generateFile(context, "java-doc.install.vm", outputDirectory, binPackageName + "-doc.install"); + } } if ("ant".equals(packageType)) { @@ -430,7 +447,6 @@ containsJars = true; } } - generateFile(context, "build.xml.vm", outputDirectory, "build.xml"); } else if (!project.getPackaging().equals("pom")) { if (project.getPackaging().equals("maven-plugin")) { containsPlugins = true; @@ -440,6 +456,10 @@ } context.put("containsJars", Boolean.valueOf(containsJars)); context.put("containsPlugins", Boolean.valueOf(containsPlugins)); + + if (project.getPackaging().equals("pom") && project.getModules().size() > 0) { + generateFile(context, "build.xml.vm", outputDirectory, "build.xml"); + } generateFile(context, "build.properties.ant.vm", outputDirectory, "build.properties"); generateFile(context, "build-classpath.vm", outputDirectory, "build-classpath"); } else { @@ -454,12 +474,17 @@ } } - private void setupArtifactLocation(ListOfPOMs listOfPOMs, MavenProject mavenProject) { - String basedir = project.getBasedir().getAbsolutePath(); - String dirRelPath = ""; - if (! mavenProject.getBasedir().equals(project.getBasedir())) { - dirRelPath = mavenProject.getBasedir().getAbsolutePath().substring(basedir.length() + 1) + "/"; + private List wrapMavenProjects(List projects) { + List wrappedProjects = new ArrayList(); + for (MavenProject aProject: projects) { + wrappedProjects.add(new WrappedProject(this.project, aProject)); } + return wrappedProjects; + } + + private void setupArtifactLocation(ListOfPOMs listOfPOMs, ListOfPOMs listOfJavadocPOMs, MavenProject mavenProject) { + String dirRelPath = new WrappedProject(project, mavenProject).getBaseDir(); + if (! "pom".equals(mavenProject.getPackaging())) { String pomFile = dirRelPath + "pom.xml"; listOfPOMs.getOrCreatePOMOptions(pomFile).setJavaLib(true); @@ -477,14 +502,13 @@ ListOfPOMs.POMOptions pomOptions = listOfPOMs.getOrCreatePOMOptions(pomFile); pomOptions.setArtifact(dirRelPath + "target/" + mavenProject.getArtifactId() + "-*." + extension); - if ("jar".equals(extension) && generateJavadoc && "ant".equals(packageType)) { + if ("jar".equals(extension) && generateJavadoc && "ant".equals(packageType) && listOfJavadocPOMs != null) { String artifactId = mavenProject.getArtifact().getArtifactId(); - String docPom = dirRelPath + "target/" + artifactId + ".javadoc.pom"; - listOfPOMs.getOrCreatePOMOptions(docPom).setIgnorePOM(true); - listOfPOMs.getOrCreatePOMOptions(docPom).setArtifact(dirRelPath + "target/" + artifactId + ".javadoc.jar"); - listOfPOMs.getOrCreatePOMOptions(docPom).setClassifier("javadoc"); - listOfPOMs.getOrCreatePOMOptions(docPom).setHasPackageVersion(pomOptions.getHasPackageVersion()); - listOfPOMs.getOrCreatePOMOptions(docPom).setDestPackage(packageName + "-doc"); + ListOfPOMs.POMOptions javadocPomOptions = listOfJavadocPOMs.getOrCreatePOMOptions(pomFile); + javadocPomOptions.setIgnorePOM(true); + javadocPomOptions.setArtifact(dirRelPath + "target/" + artifactId + ".javadoc.jar"); + javadocPomOptions.setClassifier("javadoc"); + javadocPomOptions.setHasPackageVersion(pomOptions.getHasPackageVersion()); } pomOptions.setJavaLib(true); if (mavenProject.getArtifactId().matches(packageName + "\\d")) { @@ -613,13 +637,18 @@ out.close(); } - private List listSharedJars(String library) { - final List jars = new ArrayList(); + private Map> cacheOfSharedJars = new HashMap>(); + private List listSharedJars(String library) { + if (cacheOfSharedJars.get(library) != null) { + return cacheOfSharedJars.get(library); + } + + final List jars = new ArrayList(); if (library.indexOf("(") > 0) { library = library.substring(0, library.indexOf("(")).trim(); } System.out.println(); - System.out.println("Look for shared jars in the package..."); + System.out.println("Looking for shared jars in package " + library + "..."); DependenciesSolver.executeProcess(new String[]{"/usr/bin/dpkg", "--listfiles", library}, new DependenciesSolver.OutputHandler() { @@ -634,6 +663,7 @@ } } }); + cacheOfSharedJars.put(library, jars); return jars; } @@ -662,6 +692,41 @@ DependenciesSolver.executeProcess(new String[]{"chmod", "+x", file}, new DependenciesSolver.NoOutputHandler()); } + public static class WrappedProject { + private final MavenProject baseProject; + private final MavenProject mavenProject; + + public WrappedProject(MavenProject baseProject, MavenProject mavenProject) { + this.baseProject = baseProject; + this.mavenProject = mavenProject; + } + + public String getBaseDir() { + String basedir = baseProject.getBasedir().getAbsolutePath(); + String dirRelPath = ""; + if (! mavenProject.getBasedir().equals(baseProject.getBasedir())) { + dirRelPath = mavenProject.getBasedir().getAbsolutePath().substring(basedir.length() + 1) + "/"; + } + return dirRelPath; + } + + public String getArtifactId() { + return mavenProject.getArtifactId(); + } + + public String getGroupId() { + return mavenProject.getGroupId(); + } + + public String getVersion() { + return mavenProject.getVersion(); + } + + public String getPackaging() { + return mavenProject.getPackaging(); + } + } + static class LicenseCheckResult implements DependenciesSolver.OutputHandler { private Set licenses = new TreeSet(); diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/build-classpath.vm maven-debian-helper-1.5/maven-packager-utils/src/main/resources/build-classpath.vm --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/build-classpath.vm 2010-12-05 17:23:07.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/build-classpath.vm 2012-01-25 21:05:47.000000000 +0000 @@ -1,4 +1,4 @@ /usr/share/java/ant-nodeps.jar -#foreach ($jar in $buildjars) -/usr/share/java/${jar}.jar -#end +#if($runTests) +/usr/share/java/ant-junit.jar +#end \ No newline at end of file diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/build.properties.ant.vm maven-debian-helper-1.5/maven-packager-utils/src/main/resources/build.properties.ant.vm --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/build.properties.ant.vm 2010-12-05 17:23:07.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/build.properties.ant.vm 2012-01-25 21:05:47.000000000 +0000 @@ -6,3 +6,20 @@ #if(!$runTests) maven.test.skip=true #end +classpath.compile=\ +#foreach ($jar in $compileJars) + /usr/share/java/${jar}.jar:\ +#end +#set( $D = '$' ) +#foreach ($module in $collectedProjects) +#if($module.packaging != "pom") + ${D}{basedir}/${module.baseDir}target/${module.artifactId}-${D}{version}.jar:\ +#end +#end + target/classes + +classpath.test=\ +#foreach ($jar in $testJars) + /usr/share/java/${jar}.jar:\ +#end + target/classes diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/build.xml.vm maven-debian-helper-1.5/maven-packager-utils/src/main/resources/build.xml.vm --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/build.xml.vm 2010-12-05 17:23:07.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/build.xml.vm 2012-01-25 21:05:47.000000000 +0000 @@ -16,7 +16,6 @@ -#if ($containsJars) @@ -28,7 +27,6 @@ -#end #if ($containsPlugins) @@ -44,10 +42,23 @@ #end +#if($generateJavadoc) + + + + + + + + + + + +#end #foreach ($module in $collectedProjects) - + #end @@ -55,20 +66,20 @@ #foreach ($module in $collectedProjects) #if ($module.packaging == "maven-plugin") - + #else - + #end #end #if ($generateJavadoc) - #foreach ($module in $collectedProjects) - +#if ($module.packaging != "pom") + +#end #end - diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/control.ant.vm maven-debian-helper-1.5/maven-packager-utils/src/main/resources/control.ant.vm --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/control.ant.vm 2010-12-05 23:38:29.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/control.ant.vm 2012-01-25 21:05:47.000000000 +0000 @@ -18,11 +18,11 @@ Priority: optional Maintainer: Debian Java Maintainers Uploaders: ${packager} <${packagerEmail}> -Build-Depends: debhelper (>= 7), default-jdk, maven-repo-helper (>= 1.5)#if ($project.packaging != "pom" || $project.modules.size() > 0), ant-optional, maven-ant-helper (>= 7.1)#end$space -#if(!$compileDependencies.isEmpty()) -Build-Depends-Indep:#printDependencies($compileDependencies)$space +Build-Depends: debhelper (>= 7), default-jdk, maven-repo-helper (>= 1.7.1)#if ($project.packaging != "pom" || $project.modules.size() > 0), ant-optional, maven-ant-helper (>= 7.6)#end$space +#if(!$buildDependencies.isEmpty()) +Build-Depends-Indep:#printDependencies($buildDependencies)$space #end -Standards-Version: 3.9.1 +Standards-Version: 3.9.2 Vcs-Svn: svn://svn.debian.org/svn/pkg-java/trunk/${package} Vcs-Browser: http://svn.debian.org/wsvn/pkg-java/trunk/${package} Homepage:#if(${project.Url}) ${project.Url} #else TODO #end diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/control.vm maven-debian-helper-1.5/maven-packager-utils/src/main/resources/control.vm --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/control.vm 2010-12-05 23:38:29.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/control.vm 2012-01-25 21:05:47.000000000 +0000 @@ -18,11 +18,11 @@ Priority: optional Maintainer: Debian Java Maintainers Uploaders: ${packager} <${packagerEmail}> -Build-Depends: debhelper (>= 7), cdbs, default-jdk, maven-debian-helper (>= 1.4) -#if(!$compileDependencies.isEmpty()) -Build-Depends-Indep:#printDependencies($compileDependencies)$space +Build-Depends: debhelper (>= 7), cdbs, default-jdk, maven-debian-helper (>= 1.5) +#if(!$buildDependencies.isEmpty()) +Build-Depends-Indep:#printDependencies($buildDependencies)$space #end -Standards-Version: 3.9.1 +Standards-Version: 3.9.2 Vcs-Svn: svn://svn.debian.org/svn/pkg-java/trunk/${package} Vcs-Browser: http://svn.debian.org/wsvn/pkg-java/trunk/${package} Homepage:#if(${project.Url}) ${project.Url} #else TODO #end diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/copyright.vm maven-debian-helper-1.5/maven-packager-utils/src/main/resources/copyright.vm --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/copyright.vm 2011-06-25 11:18:55.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/copyright.vm 2012-01-25 21:05:47.000000000 +0000 @@ -1,22 +1,8 @@ #set ($space = " ") Format: http://dep.debian.net/deps/dep5/ Upstream-Name: ${project.Name} -#set ($maintainerHeader = "Upstream-Contact: ") -#macro(printRoles $roles $defaultRole) -#if ($roles.isEmpty())${defaultRole} -#else -#foreach ($role in $roles) -${role}#if($velocityHasNext), #end -#end -#end -#end -#foreach ($developer in $project.Developers) -${maintainerHeader} ${developer.Name}#if (${developer.Email}) <${developer.Email}>#end as #printRoles($developer.Roles, "Developer")$space -#set ($maintainerHeader = " ") -#end -#foreach ($contributor in $project.Contributors) -${maintainerHeader} ${contributor.Name}#if (${contributor.Email}) <${contributor.Email}>#end as #printRoles($developer.Roles, "Contributor")$space -#set ($maintainerHeader = " ") +#if ($project.CiManagement && $project.CiManagement.Url) +Upstream-Contact: ${project.CiManagement.Url} #end Source: ${project.Url} diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/java-doc.doc-base.api.multi.vm maven-debian-helper-1.5/maven-packager-utils/src/main/resources/java-doc.doc-base.api.multi.vm --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/java-doc.doc-base.api.multi.vm 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/java-doc.doc-base.api.multi.vm 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,20 @@ +Document: ${binPackage} +Title: API Javadoc for ${project.Name} +Author: ${projectTeam} +Abstract: This is the API Javadoc provided for the + ${binPackage} libraries. +Section: Programming + +Format: HTML +#set($seenIndex=false) +#foreach ($module in $collectedProjects) +#if ($module.packaging != "pom") +#if(!$seenIndex) +Index: /usr/share/doc/${binPackage}/${module.baseDir}index.html +Files: /usr/share/doc/${binPackage}/${module.baseDir}* +#else +#set($seenIndex=true) + /usr/share/doc/${binPackage}/${module.baseDir}* +#end +#end +#end diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/java-doc.install.multi.vm maven-debian-helper-1.5/maven-packager-utils/src/main/resources/java-doc.install.multi.vm --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/java-doc.install.multi.vm 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/java-doc.install.multi.vm 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,5 @@ +#foreach ($module in $collectedProjects) +#if ($module.packaging != "pom") +${module.baseDir}target/apidocs/* usr/share/doc/${binPackage}/${module.baseDir} +#end +#end diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/maven.cleanIgnoreRules.description maven-debian-helper-1.5/maven-packager-utils/src/main/resources/maven.cleanIgnoreRules.description --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/maven.cleanIgnoreRules.description 2010-07-26 11:56:05.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/maven.cleanIgnoreRules.description 2012-01-25 21:05:47.000000000 +0000 @@ -13,4 +13,4 @@ # Example rule: match jar with groupid= junit, artifactid= junit # and version starting with 3., this dependency is then removed # from the POM before mvn clean is called -# junit junit jar s/3\\..*/3.x/ +# junit junit jar s/3\..*/3.x/ diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/maven.ignoreRules.description maven-debian-helper-1.5/maven-packager-utils/src/main/resources/maven.ignoreRules.description --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/maven.ignoreRules.description 2010-07-26 11:56:05.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/maven.ignoreRules.description 2012-01-25 21:05:47.000000000 +0000 @@ -12,4 +12,4 @@ # Example rule: match jar with groupid= junit, artifactid= junit # and version starting with 3., this dependency is then removed # from the POM -# junit junit jar s/3\\..*/3.x/ +# junit junit jar s/3\..*/3.x/ diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/maven.publishedRules.description maven-debian-helper-1.5/maven-packager-utils/src/main/resources/maven.publishedRules.description --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/maven.publishedRules.description 2010-07-26 11:56:05.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/maven.publishedRules.description 2012-01-25 21:05:47.000000000 +0000 @@ -15,4 +15,4 @@ # All elements much match before a rule can be applied # Example rule: match jar with groupid= junit, artifactid= junit # and version starting with 3., replacing the version with 3.x -# junit junit jar s/3\\..*/3.x/ +# junit junit jar s/3\..*/3.x/ diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/maven.rules.description maven-debian-helper-1.5/maven-packager-utils/src/main/resources/maven.rules.description --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/maven.rules.description 2010-07-26 11:56:05.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/maven.rules.description 2012-01-25 21:05:47.000000000 +0000 @@ -14,4 +14,4 @@ # All elements much match before a rule can be applied # Example rule: match jar with groupid= junit, artifactid= junit # and version starting with 3., replacing the version with 3.x -# junit junit jar s/3\\..*/3.x/ +# junit junit jar s/3\..*/3.x/ diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/rules.ant.vm maven-debian-helper-1.5/maven-packager-utils/src/main/resources/rules.ant.vm --- maven-debian-helper-1.4.5/maven-packager-utils/src/main/resources/rules.ant.vm 2010-12-05 20:43:17.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/main/resources/rules.ant.vm 2012-01-25 21:05:47.000000000 +0000 @@ -6,8 +6,8 @@ #if ($project.packaging != "pom" || $project.modules.size() > 0) export JAVA_HOME=/usr/lib/jvm/default-java export CLASSPATH=$(shell for jar in `cat debian/build-classpath`; do if [ -f "$$jar" ]; then echo -n "$${jar}:"; fi; done) -#if ($project.packaging == "pom" && $project.modules.size() > 0) -export ANT_ARGS=-Dbasedir=$(realpath .) -Dpackage=$(DEB_SOURCE_PACKAGE) -f debian/build.xml +#if ($project.packaging == "pom") +export ANT_ARGS=-Dbasedir=$(realpath .) -Dpackage=$(DEB_SOURCE_PACKAGE) -Dversion=$(DEB_UPSTREAM_VERSION) -f debian/build.xml #else export ANT_ARGS=-Dbasedir=$(realpath .) -Dpackage=$(DEB_SOURCE_PACKAGE) -f /usr/share/maven-ant-helper/maven-build.xml #end diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/java/org/debian/maven/packager/DependenciesSolverTest.java maven-debian-helper-1.5/maven-packager-utils/src/test/java/org/debian/maven/packager/DependenciesSolverTest.java --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/java/org/debian/maven/packager/DependenciesSolverTest.java 2011-06-12 19:32:46.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/java/org/debian/maven/packager/DependenciesSolverTest.java 2012-01-25 21:05:45.000000000 +0000 @@ -253,6 +253,7 @@ solver.setListOfPoms(new File(listOfPoms.getParent(), listOfPoms.getName())); solver.setInteractive(false); solver.setOffline(true); + solver.setVerbose(true); solver.solveDependencies(); @@ -270,6 +271,60 @@ assertFileEquals("buildhelper-maven-plugin.rules", "maven.rules"); } + public void testSolvePlexusCompilerDependencies() throws Exception { + useFile("plexus-compiler/pom.xml", pomFile); + DependenciesSolver solver = new DependenciesSolver(); + solver.setMavenRepo(getFileInClasspath("repository/root.dir").getParentFile()); + solver.setOutputDirectory(testDir); + // libplexus-compiler-java.poms already contains some POMs but we want to discover them all + solver.setExploreProjects(true); + solver.setPackageName("libplexus-compiler-java"); + solver.setPackageType("maven"); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("junit junit jar s/3\\..*/3.x/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-compiler-api jar s/1\\..*/1.x/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-compiler-aspectj jar s/1\\..*/1.x/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-compiler-csharp jar s/1\\..*/1.x/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-compiler-eclipse jar s/1\\..*/1.x/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-compiler-javac jar s/1\\..*/1.x/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-compiler-jikes jar s/1\\..*/1.x/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-compiler-manager jar s/1\\..*/1.x/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-compiler-test jar s/1\\..*/1.x/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-compiler pom s/1\\..*/1.x/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-compilers pom s/1\\..*/1.x/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-components pom s/1\\..*/1.x/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-container-default jar s/1\\.0-alpha.*/1.0-alpha/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("s/org.eclipse.jdt/org.eclipse.jdt.core.compiler/ s/core/ecj/ jar s/.*/debian/ * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.apache.maven.plugins maven-gpg-plugin * * * *")); + // Ignore those plugins for Ant builds + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-component-metadata * * * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.apache.maven maven-artifact-test * * * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.apache.maven.plugins maven-surefire-plugin * * * *")); + solver.getPomTransformer().addIgnoreRule(new DependencyRule("org.codehaus.plexus plexus-compiler-test * * * *")); + + File listOfPoms = getFileInClasspath("libplexus-compiler-java.poms"); + solver.setBaseDir(getFileInClasspath("plexus-compiler/pom.xml").getParentFile()); + solver.setListOfPoms(new File(listOfPoms.getParent(), listOfPoms.getName())); + solver.setInteractive(false); + solver.setOffline(true); + solver.setRunTests(true); + solver.setVerbose(true); + + solver.solveDependencies(); + + assertTrue("Did not expect any issues", solver.getIssues().isEmpty()); + + solver.setBaseDir(testDir); + solver.setListOfPoms(new File(testDir, "libplexus-compiler-java.poms")); + + solver.saveListOfPoms(); + solver.saveMavenRules(); + solver.saveSubstvars(); + + assertFileEquals("libplexus-compiler-java.poms", "libplexus-compiler-java.poms"); + assertFileEquals("libplexus-compiler-java.substvars", "libplexus-compiler-java.substvars"); + assertFileEquals("libplexus-compiler-java.rules", "maven.rules"); + } + protected void assertFileEquals(String resource, String fileName) throws Exception { File file = new File(testDir, fileName); assertTrue(file.exists()); @@ -296,6 +351,7 @@ skipReadTest = true; continue; } + assertNotNull("Error in " + fileName + ": expected " + ref.trim() + " but found nothing", test); assertEquals("Error in " + fileName, ref.trim(), test.trim()); } } diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/buildhelper-maven-plugin.rules maven-debian-helper-1.5/maven-packager-utils/src/test/resources/buildhelper-maven-plugin.rules --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/buildhelper-maven-plugin.rules 2011-06-12 19:32:47.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/buildhelper-maven-plugin.rules 2012-01-25 21:05:47.000000000 +0000 @@ -1,3 +1,2 @@ junit junit jar s/3\..*/3.x/ * * org.codehaus.mojo mojo-parent pom s/.*/debian/ * * -org.apache.maven maven-plugin-api * s/.*/debian/ * * \ No newline at end of file diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/buildhelper-maven-plugin.substvars maven-debian-helper-1.5/maven-packager-utils/src/test/resources/buildhelper-maven-plugin.substvars --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/buildhelper-maven-plugin.substvars 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/buildhelper-maven-plugin.substvars 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,5 @@ +#List of dependencies for buildhelper-maven-plugin, generated for use by debian/control +maven.CompileDepends=libmaven-plugin-tools-java +maven.Depends=libmaven2-core-java, libmojo-parent-java (>= 23), libplexus-utils-java (>= 1.5.15) +maven.OptionalDepends= +maven.TestDepends= diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/libplexus-active-collections-java.substvars maven-debian-helper-1.5/maven-packager-utils/src/test/resources/libplexus-active-collections-java.substvars --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/libplexus-active-collections-java.substvars 2010-12-05 17:23:07.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/libplexus-active-collections-java.substvars 2012-01-25 21:05:47.000000000 +0000 @@ -1,6 +1,5 @@ #List of dependencies for libplexus-active-collections-java, generated for use by debian/control -#Wed Jun 24 22:57:35 BST 2009 -maven.CompileDepends=libplexus-maven-plugin-java (>\= 1.3.8), libsurefire-java +maven.CompileDepends=libplexus-maven-plugin-java (>= 1.3.8), libsurefire-java maven.Depends=libplexus-component-api-java, libplexus-containers-java maven.OptionalDepends= -maven.TestDepends=junit (>\= 3.8.1) +maven.TestDepends=junit (>= 3.8.1) diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.poms maven-debian-helper-1.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.poms --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.poms 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.poms 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,4 @@ +pom.xml +plexus-compiler-api/pom.xml +plexus-compilers/plexus-compiler-aspectj/pom.xml --ignore +plexus-compiler-test/pom.xml --ignore diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.result.poms maven-debian-helper-1.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.result.poms --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.result.poms 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.result.poms 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,37 @@ +# List of POM files for the package +# Format of this file is: +# [option]* +# where option can be: +# --ignore: ignore this POM and its artifact if any +# --ignore-pom: don't install the POM. To use on POM files that are created +# temporarily for certain artifacts such as Javadoc jars. [mh_install, mh_installpoms] +# --no-parent: remove the tag from the POM +# --package=: an alternative package to use when installing this POM +# and its artifact +# --has-package-version: to indicate that the original version of the POM is the same as the upstream part +# of the version for the package. +# --keep-elements=: a list of XML elements to keep in the POM +# during a clean operation with mh_cleanpom or mh_installpom +# --artifact=: path to the build artifact associated with this POM, +# it will be installed when using the command mh_install. [mh_install] +# --java-lib: install the jar into /usr/share/java to comply with Debian +# packaging guidelines +# --usj-name=: name to use when installing the library in /usr/share/java +# --usj-version=: version to use when installing the library in /usr/share/java +# --no-usj-versionless: don't install the versionless link in /usr/share/java +# --dest-jar=: the destination for the real jar. +# It will be installed with mh_install. [mh_install] +# --classifier=: Optional, the classifier for the jar. Empty by default. +# --site-xml=: Optional, the location for site.xml if it needs to be installed. +# Empty by default. [mh_install] +# +pom.xml +plexus-compiler-api/pom.xml +plexus-compilers/plexus-compiler-aspectj/pom.xml --ignore +plexus-compiler-test/pom.xml --ignore +plexus-compiler-manager/pom.xml +plexus-compilers/pom.xml +plexus-compilers/plexus-compiler-csharp/pom.xml +plexus-compilers/plexus-compiler-eclipse/pom.xml +plexus-compilers/plexus-compiler-jikes/pom.xml +plexus-compilers/plexus-compiler-javac/pom.xml diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.rules maven-debian-helper-1.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.rules --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.rules 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.rules 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,21 @@ +# Maven rules - transform Maven dependencies and plugins +# Format of this file is: +# [group] [artifact] [type] [version] [classifier] [scope] +# where each element can be either +# - the exact string, for example org.apache for the group, or 3.1 +# for the version. In this case, the element is simply matched +# and left as it is +# - * (the star character, alone). In this case, anything will +# match and be left as it is. For example, using * on the +# position of the artifact field will match any artifact id +# - a regular expression of the form s/match/replace/ +# in this case, elements that match are transformed using +# the regex rule. +# All elements much match before a rule can be applied +# Example rule: match jar with groupid= junit, artifactid= junit +# and version starting with 3., replacing the version with 3.x +# junit junit jar s/3\..*/3.x/ + +junit junit jar s/3\..*/3.x/ * * +org.codehaus.plexus plexus-components pom s/1\..*/1.x/ * * +org.codehaus.plexus plexus-container-default jar s/1\.0-alpha.*/1.0-alpha/ * * diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.substvars maven-debian-helper-1.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.substvars --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.substvars 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/libplexus-compiler-java.substvars 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,5 @@ +#List of dependencies for libplexus-compiler-java, generated for use by debian/control +maven.CompileDepends= +maven.Depends=libplexus-components-java (>= 1.1.18), libplexus-utils-java (>= 1.5.15) +maven.OptionalDepends= +maven.TestDepends= diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/libplexus-utils2-java.substvars maven-debian-helper-1.5/maven-packager-utils/src/test/resources/libplexus-utils2-java.substvars --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/libplexus-utils2-java.substvars 2010-10-31 10:30:31.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/libplexus-utils2-java.substvars 2012-01-25 21:05:47.000000000 +0000 @@ -1,6 +1,5 @@ #List of dependencies for libplexus-utils2-java, generated for use by debian/control -#Sun Oct 10 23:31:00 CEST 2010 -maven.CompileDepends=libmaven-compiler-plugin-java (>\= 2.0.2), libsurefire-java +maven.CompileDepends=libmaven-compiler-plugin-java (>= 2.0.2), libsurefire-java maven.Depends= maven.OptionalDepends= maven.TestDepends= diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/openmrs-api.substvars maven-debian-helper-1.5/maven-packager-utils/src/test/resources/openmrs-api.substvars --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/openmrs-api.substvars 2011-06-12 19:32:47.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/openmrs-api.substvars 2012-01-25 21:05:47.000000000 +0000 @@ -1,6 +1,5 @@ #List of dependencies for openmrs, generated for use by debian/control -#Sun Oct 24 23:51:45 CEST 2010 maven.CompileDepends=libantlr-maven-plugin-java, libmaven-jar-plugin-java, libmaven-javadoc-plugin-java, libsurefire-java -maven.Depends=antlr3, libasm2-java, libcglib-java, libcommons-beanutils-java, libcommons-collections3-java, libjaxp1.3-java, liblog4j1.2-java (>\= 1.2.15), libreflectutils-java, libslf4j-java, libxerces2-java, libxstream-java, velocity +maven.Depends=antlr3, libasm2-java, libcglib-java, libcommons-beanutils-java, libcommons-collections3-java, libjaxp1.3-java, liblog4j1.2-java (>= 1.2.15), libreflectutils-java, libslf4j-java, libxerces2-java, libxstream-java, velocity maven.OptionalDepends= maven.TestDepends= \ No newline at end of file diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compiler-api/pom.xml maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compiler-api/pom.xml --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compiler-api/pom.xml 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compiler-api/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,25 @@ + + + 4.0.0 + + + org.codehaus.plexus + plexus-compiler + 1.8.2 + + + plexus-compiler-api + + Plexus Compiler Api + + + + org.codehaus.plexus + plexus-utils + + + junit + junit + + + diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compiler-manager/pom.xml maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compiler-manager/pom.xml --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compiler-manager/pom.xml 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compiler-manager/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,21 @@ + + + 4.0.0 + + + org.codehaus.plexus + plexus-compiler + 1.8.2 + + + plexus-compiler-manager + + Plexus Compiler Manager + + + + org.codehaus.plexus + plexus-compiler-api + + + diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-aspectj/pom.xml maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-aspectj/pom.xml --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-aspectj/pom.xml 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-aspectj/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,27 @@ + + + 4.0.0 + + + org.codehaus.plexus + plexus-compilers + 1.8.2 + + + plexus-compiler-aspectj + + Plexus AspectJ Compiler + + + + aspectj + aspectjrt + 1.5.0 + + + aspectj + aspectjtools + 1.5.0 + + + diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-csharp/pom.xml maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-csharp/pom.xml --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-csharp/pom.xml 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-csharp/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,21 @@ + + + 4.0.0 + + + org.codehaus.plexus + plexus-compilers + 1.8.2 + + + plexus-compiler-csharp + + Plexus C# Compiler + + + + org.codehaus.plexus + plexus-utils + + + diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-eclipse/pom.xml maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-eclipse/pom.xml --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-eclipse/pom.xml 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-eclipse/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,44 @@ + + + 4.0.0 + + + org.codehaus.plexus + plexus-compilers + 1.8.2 + + + plexus-compiler-eclipse + + Plexus Eclipse Compiler + + + + org.codehaus.plexus + plexus-utils + + + org.eclipse.jdt + core + 3.3.0-v_771 + + + org.eclipse.core + resources + + + org.eclipse.core + runtime + + + org.eclipse.core + filesystem + + + org.eclipse + text + + + + + diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-javac/pom.xml maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-javac/pom.xml --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-javac/pom.xml 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-javac/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,22 @@ + + + 4.0.0 + + + org.codehaus.plexus + plexus-compilers + 1.8.2 + + + plexus-compiler-javac + + Plexus Javac Component + + + + org.codehaus.plexus + plexus-utils + + + + diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-jikes/pom.xml maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-jikes/pom.xml --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-jikes/pom.xml 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/plexus-compiler-jikes/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,57 @@ + + + 4.0.0 + + + org.codehaus.plexus + plexus-compilers + 1.8.2 + + + plexus-compiler-jikes + + Plexus Jikes Compiler + + + + org.codehaus.plexus + plexus-utils + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + + + + + jikes-enabled + + + jikes-enabled + true + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + + + + + diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/pom.xml maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/pom.xml --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/pom.xml 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compilers/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,42 @@ + + + 4.0.0 + + + org.codehaus.plexus + plexus-compiler + 1.8.2 + + + org.codehaus.plexus + plexus-compilers + pom + + Plexus Compilers + + + plexus-compiler-aspectj + plexus-compiler-csharp + plexus-compiler-eclipse + plexus-compiler-jikes + plexus-compiler-javac + + + + + junit + junit + test + + + org.codehaus.plexus + plexus-compiler-api + + + org.codehaus.plexus + plexus-compiler-test + test + + + + diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compiler-test/pom.xml maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compiler-test/pom.xml --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compiler-test/pom.xml 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/plexus-compiler-test/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,57 @@ + + + 4.0.0 + + + org.codehaus.plexus + plexus-compiler + 1.8.2 + + + plexus-compiler-test + + Plexus Compiler Test Harness + + + + org.codehaus.plexus + plexus-compiler-api + + + junit + junit + compile + + + org.apache.maven + maven-artifact-test + 2.0.10 + + + org.apache.maven + maven-artifact + 2.0 + + + org.apache.maven + maven-artifact-manager + 2.0 + + + org.apache.maven + maven-settings + 2.0 + + + org.codehaus.plexus + plexus-utils + + + + commons-lang + commons-lang + 2.0 + runtime + + + diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/pom.xml maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/pom.xml --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/plexus-compiler/pom.xml 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/plexus-compiler/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,119 @@ + + + + 4.0.0 + + + org.codehaus.plexus + plexus-components + 1.1.18 + + + plexus-compiler + 1.8.2 + pom + + Plexus Compiler + + + plexus-compiler-api + plexus-compiler-test + plexus-compiler-manager + plexus-compilers + + + + scm:git:git@github.com:sonatype/plexus-compiler.git + scm:git:git@github.com:sonatype/plexus-compiler.git + http://github.com/sonatype/plexus-compiler + + + jira + http://jira.codehaus.org/browse/PLXCOMP/component/12541 + + + + + + org.codehaus.plexus + plexus-compiler-api + ${project.version} + + + org.codehaus.plexus + plexus-compiler-test + ${project.version} + + + + + + org.codehaus.plexus + plexus-container-default + 1.0-alpha-9-stable-1 + provided + + + junit + junit + 3.8.2 + test + + + + + + + org.codehaus.plexus + plexus-component-metadata + 1.5.1 + + + + generate-metadata + merge-metadata + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.2 + + + + + + + + maven.repo.local + + + maven.repo.local + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + maven.repo.local + ${maven.repo.local} + + + + + + + + + + diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/repository/org/codehaus/mojo/mojo-parent/debian/mojo-parent-debian.pom maven-debian-helper-1.5/maven-packager-utils/src/test/resources/repository/org/codehaus/mojo/mojo-parent/debian/mojo-parent-debian.pom --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/repository/org/codehaus/mojo/mojo-parent/debian/mojo-parent-debian.pom 2011-06-12 19:32:47.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/repository/org/codehaus/mojo/mojo-parent/debian/mojo-parent-debian.pom 2012-01-25 21:05:47.000000000 +0000 @@ -86,7 +86,7 @@ org.apache.maven maven-plugin-api - 2.x + debian junit diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom maven-debian-helper-1.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom 2010-10-31 10:30:30.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom 2012-01-25 21:05:46.000000000 +0000 @@ -265,7 +265,7 @@ junit junit - debian + 3.x test diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus/2.x/plexus-2.x.pom maven-debian-helper-1.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus/2.x/plexus-2.x.pom --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus/2.x/plexus-2.x.pom 2010-10-31 10:30:30.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus/2.x/plexus-2.x.pom 2012-01-25 21:05:46.000000000 +0000 @@ -265,7 +265,7 @@ junit junit - debian + 3.x test diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus-component-metadata/1.0-beta-3.0.7/plexus-component-metadata-1.0-beta-3.0.7.pom maven-debian-helper-1.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus-component-metadata/1.0-beta-3.0.7/plexus-component-metadata-1.0-beta-3.0.7.pom --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus-component-metadata/1.0-beta-3.0.7/plexus-component-metadata-1.0-beta-3.0.7.pom 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus-component-metadata/1.0-beta-3.0.7/plexus-component-metadata-1.0-beta-3.0.7.pom 2012-01-25 21:05:47.000000000 +0000 @@ -0,0 +1,79 @@ + + + + 4.0.0 + org.codehaus.plexus + plexus-component-metadata + 1.0-beta-3.0.7 + maven-plugin + + org.codehaus.plexus + plexus-containers + debian + + + 3.1 + 1.0 + 1.2 + 1.0-beta-3.0.7 + libplexus-component-metadata-java + + + Plexus :: Component Metadata + A Maven plugin to generate Plexus descriptors from source tags and class annotations. + + + org.codehaus.plexus + plexus-container-default + + + org.codehaus.plexus + plexus-component-annotations + + + org.codehaus.plexus + plexus-utils + + + + com.thoughtworks.qdox + qdox + + + org.jdom + jdom + + + org.apache.maven + maven-plugin-api + + + org.apache.maven + maven-model + + + org.apache.maven + maven-project + + + org.codehaus.plexus + plexus-cli + debian + + + commons-cli + commons-cli + debian + + + asm + asm + 3.x + + + \ No newline at end of file diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom maven-debian-helper-1.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom 2012-01-25 21:05:46.000000000 +0000 @@ -0,0 +1,136 @@ + + + 4.0.0 + org.codehaus.plexus + plexus-components + 1.1.18 + pom + + + org.codehaus.plexus plexus-components pom s/1\..*/1.x/ * * + 1.1.18 + libplexus-components-java + + + Plexus Components + http://plexus.codehaus.org/plexus-components + + plexus-archiver + plexus-cli + plexus-compiler + plexus-digest + plexus-i18n + plexus-interactivity + plexus-interpolation + plexus-io + plexus-resources + + plexus-velocity + + + scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-components-1.1.18 + scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-components-1.1.18 + http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-components-1.1.18 + + + JIRA + http://jira.codehaus.org/browse/PLXCOMP + + + + + org.codehaus.plexus + plexus-container-default + 1.0-alpha + + + org.codehaus.plexus + plexus-utils + debian + + + junit + junit + 3.x + test + + + + + + parent-release + + + + maven-release-plugin + + -N -Pplexus-release + + + + + + + maven-3 + + + + ${basedir} + + + + + + org.apache.maven.plugins + maven-site-plugin + false + + + attach-descriptor + + attach-descriptor + + + + + + + + + m2e + + + m2e.version + + + + target + + + ${m2BuildDirectory} + + + org.maven.ide.eclipse + lifecycle-mapping + + customizable + + + + + + + + + + org.apache.maven.plugins:maven-resources-plugin:: + + + + + + + + \ No newline at end of file diff -Nru maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus-components/1.x/plexus-components-1.x.pom maven-debian-helper-1.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus-components/1.x/plexus-components-1.x.pom --- maven-debian-helper-1.4.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus-components/1.x/plexus-components-1.x.pom 1970-01-01 00:00:00.000000000 +0000 +++ maven-debian-helper-1.5/maven-packager-utils/src/test/resources/repository/org/codehaus/plexus/plexus-components/1.x/plexus-components-1.x.pom 2012-01-25 21:05:46.000000000 +0000 @@ -0,0 +1,136 @@ + + + 4.0.0 + org.codehaus.plexus + plexus-components + 1.x + pom + + + org.codehaus.plexus plexus-components pom s/1\..*/1.x/ * * + 1.1.18 + libplexus-components-java + + + Plexus Components + http://plexus.codehaus.org/plexus-components + + plexus-archiver + plexus-cli + plexus-compiler + plexus-digest + plexus-i18n + plexus-interactivity + plexus-interpolation + plexus-io + plexus-resources + + plexus-velocity + + + scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-components-1.1.18 + scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-components-1.1.18 + http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-components-1.1.18 + + + JIRA + http://jira.codehaus.org/browse/PLXCOMP + + + + + org.codehaus.plexus + plexus-container-default + 1.0-alpha + + + org.codehaus.plexus + plexus-utils + debian + + + junit + junit + 3.x + test + + + + + + parent-release + + + + maven-release-plugin + + -N -Pplexus-release + + + + + + + maven-3 + + + + ${basedir} + + + + + + org.apache.maven.plugins + maven-site-plugin + false + + + attach-descriptor + + attach-descriptor + + + + + + + + + m2e + + + m2e.version + + + + target + + + ${m2BuildDirectory} + + + org.maven.ide.eclipse + lifecycle-mapping + + customizable + + + + + + + + + + org.apache.maven.plugins:maven-resources-plugin:: + + + + + + + + \ No newline at end of file diff -Nru maven-debian-helper-1.4.5/pom.xml maven-debian-helper-1.5/pom.xml --- maven-debian-helper-1.4.5/pom.xml 2011-09-01 00:06:14.000000000 +0000 +++ maven-debian-helper-1.5/pom.xml 2012-01-25 21:05:47.000000000 +0000 @@ -4,7 +4,7 @@ org.debian.maven maven-debian - 1.4 + 1.5 pom helper tools for using Maven to build Debian packages @@ -38,8 +38,60 @@ org.debian.maven maven-repo-helper - 1.5 + 1.7.1 + + + org.apache.maven + maven-plugin-api + 2.2.1 + + + org.apache.maven + maven-artifact + 2.2.1 + + + classworlds + classworlds + 1.1 + + + org.apache.maven + maven-project + 2.2.1 + + + org.apache.velocity + velocity + 1.6.2 + + + junit + junit + 3.8.2 + test + + + commons-io + commons-io + 1.4 + test + + + + + + maven-compiler-plugin + 2.1 + + 1.5 + 1.5 + + + + + diff -Nru maven-debian-helper-1.4.5/share/cdbs/1/class/maven.mk maven-debian-helper-1.5/share/cdbs/1/class/maven.mk --- maven-debian-helper-1.4.5/share/cdbs/1/class/maven.mk 2011-06-25 18:50:11.000000000 +0000 +++ maven-debian-helper-1.5/share/cdbs/1/class/maven.mk 2012-01-25 21:05:47.000000000 +0000 @@ -90,7 +90,6 @@ $(MAKE) -f debian/rules patch-poms; \ fi $(DEB_MAVEN_INVOKE) $(DEB_MAVEN_BUILD_TARGET) - touch $@ # Placeholders to insert custom processing before and after a Maven build before-mvn-build:: after-mvn-build::