Author: ludovicc-guest Date: 2010-09-16 22:14:29 +0000 (Thu, 16 Sep 2010) New Revision: 12984
Modified: trunk/maven-debian-helper/debian/changelog trunk/maven-debian-helper/debian/control trunk/maven-debian-helper/maven-build-nodocs/pom.xml trunk/maven-debian-helper/maven-debian-helper/pom.xml trunk/maven-debian-helper/maven-debian-plugin/pom.xml trunk/maven-debian-helper/maven-packager-utils/pom.xml trunk/maven-debian-helper/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesMojo.java trunk/maven-debian-helper/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesSolver.java trunk/maven-debian-helper/maven-packager-utils/src/test/java/org/debian/maven/packager/DependenciesSolverTest.java trunk/maven-debian-helper/pom.xml trunk/maven-debian-helper/share/cdbs/1/class/maven.mk Log: * debian/control: Update Standards-Version to 3.9.1, no changes for the report (Closes: #591513) * mh_make: assist with the rules to transform the versions * mh_make: use existing package.poms files if any * maven.mk: all rules in maven.ignoreRules are also used during the clean phase, so there is no need to duplicate them in maven.cleanIgnoreRules also. Modified: trunk/maven-debian-helper/debian/changelog =================================================================== --- trunk/maven-debian-helper/debian/changelog 2010-09-16 22:05:49 UTC (rev 12983) +++ trunk/maven-debian-helper/debian/changelog 2010-09-16 22:14:29 UTC (rev 12984) @@ -1,13 +1,19 @@ -maven-debian-helper (1.1.1) UNRELEASED; urgency=low +maven-debian-helper (1.2) unstable; urgency=low [ Ludovic Claude ] + * debian/control: Update Standards-Version to 3.9.1, no changes * mh_make: fix issue when no-parent option is needed. Thanks Torsten - for the report + for the report (Closes: #591513) + * mh_make: assist with the rules to transform the versions + * mh_make: use existing package.poms files if any + * maven.mk: all rules in maven.ignoreRules are also used during the + clean phase, so there is no need to duplicate them in + maven.cleanIgnoreRules also. [ Damien Raude-Morvan ] * DependenciesSolver: Fix ClassCastException when using mh_make. - -- Damien Raude-Morvan <[email protected]> Sun, 05 Sep 2010 18:05:27 +0200 + -- Ludovic Claude <[email protected]> Thu, 16 Sep 2010 23:28:02 +0200 maven-debian-helper (1.1) unstable; urgency=low Modified: trunk/maven-debian-helper/debian/control =================================================================== --- trunk/maven-debian-helper/debian/control 2010-09-16 22:05:49 UTC (rev 12983) +++ trunk/maven-debian-helper/debian/control 2010-09-16 22:14:29 UTC (rev 12984) @@ -5,17 +5,17 @@ Uploaders: Torsten Werner <[email protected]>, Ludovic Claude <[email protected]>, Michael Koch <[email protected]>, Damien Raude-Morvan <[email protected]> Build-Depends: cdbs, debhelper (>= 7), default-jdk, maven-ant-helper (>> 4), ant-optional, help2man -Build-Depends-Indep: maven-repo-helper (>= 1.2), +Build-Depends-Indep: maven-repo-helper (>= 1.3), junit, testng, libmaven-plugin-tools-java, libplexus-velocity-java, velocity, libmaven2-core-java -Standards-Version: 3.9.0 +Standards-Version: 3.9.1 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/ Homepage: http://wiki.debian.org/Java/MavenBuilder Package: maven-debian-helper Architecture: all -Depends: ${misc:Depends}, default-jdk, maven-repo-helper (>= 1.2), maven2 (>= 2.2.1-5), +Depends: ${misc:Depends}, default-jdk, maven-repo-helper (>= 1.3), maven2 (>= 2.2.1-5), libmaven-clean-plugin-java, libmaven-resources-plugin-java, libmaven-compiler-plugin-java, libmaven-jar-plugin-java, libmaven-site-plugin-java, libsurefire-java, velocity, libplexus-velocity-java Modified: trunk/maven-debian-helper/maven-build-nodocs/pom.xml =================================================================== --- trunk/maven-debian-helper/maven-build-nodocs/pom.xml 2010-09-16 22:05:49 UTC (rev 12983) +++ trunk/maven-debian-helper/maven-build-nodocs/pom.xml 2010-09-16 22:14:29 UTC (rev 12984) @@ -5,7 +5,7 @@ <parent> <groupId>org.debian.maven</groupId> <artifactId>maven-debian</artifactId> - <version>1.1</version> + <version>1.2</version> </parent> <artifactId>maven-build-nodocs</artifactId> Modified: trunk/maven-debian-helper/maven-debian-helper/pom.xml =================================================================== --- trunk/maven-debian-helper/maven-debian-helper/pom.xml 2010-09-16 22:05:49 UTC (rev 12983) +++ trunk/maven-debian-helper/maven-debian-helper/pom.xml 2010-09-16 22:14:29 UTC (rev 12984) @@ -5,7 +5,7 @@ <parent> <groupId>org.debian.maven</groupId> <artifactId>maven-debian</artifactId> - <version>1.1</version> + <version>1.2</version> </parent> <artifactId>maven-debian-helper</artifactId> @@ -19,4 +19,4 @@ <version>1.1</version> </dependency> </dependencies> -</project> \ No newline at end of file +</project> Modified: trunk/maven-debian-helper/maven-debian-plugin/pom.xml =================================================================== --- trunk/maven-debian-helper/maven-debian-plugin/pom.xml 2010-09-16 22:05:49 UTC (rev 12983) +++ trunk/maven-debian-helper/maven-debian-plugin/pom.xml 2010-09-16 22:14:29 UTC (rev 12984) @@ -5,7 +5,7 @@ <parent> <artifactId>maven-debian</artifactId> <groupId>org.debian.maven</groupId> - <version>1.1</version> + <version>1.2</version> </parent> <artifactId>maven-debian-plugin</artifactId> @@ -16,7 +16,7 @@ <dependency> <groupId>org.debian.maven</groupId> <artifactId>maven-repo-helper</artifactId> - <version>1.1</version> + <version>1.3</version> </dependency> </dependencies> -</project> \ No newline at end of file +</project> Modified: trunk/maven-debian-helper/maven-packager-utils/pom.xml =================================================================== --- trunk/maven-debian-helper/maven-packager-utils/pom.xml 2010-09-16 22:05:49 UTC (rev 12983) +++ trunk/maven-debian-helper/maven-packager-utils/pom.xml 2010-09-16 22:14:29 UTC (rev 12984) @@ -5,7 +5,7 @@ <parent> <artifactId>maven-debian</artifactId> <groupId>org.debian.maven</groupId> - <version>1.1</version> + <version>1.2</version> </parent> <artifactId>maven-packager-utils</artifactId> @@ -47,7 +47,7 @@ <dependency> <groupId>org.debian.maven</groupId> <artifactId>maven-repo-helper</artifactId> - <version>1.2</version> + <version>1.3</version> </dependency> <dependency> <groupId>commons-io</groupId> @@ -56,4 +56,4 @@ <scope>test</scope> </dependency> </dependencies> -</project> \ No newline at end of file +</project> Modified: trunk/maven-debian-helper/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesMojo.java =================================================================== --- trunk/maven-debian-helper/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesMojo.java 2010-09-16 22:05:49 UTC (rev 12983) +++ trunk/maven-debian-helper/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesMojo.java 2010-09-16 22:14:29 UTC (rev 12984) @@ -82,10 +82,10 @@ */ protected File mavenRepo; /** - * Type of the package (e.g. 'maven' or 'ant') - * @parameter expression="${nonInteractive}" default-value="false" + * Interactive execution will ask questions to the user + * @parameter expression="${interactive}" default-value="true" */ - protected boolean nonInteractive; + protected boolean interactive; public void execute() throws MojoExecutionException { @@ -112,7 +112,7 @@ solver.setOutputDirectory(outputDirectory); solver.setPackageName(packageName); solver.setPackageType(packageType); - solver.setNonInteractive(nonInteractive); + solver.setInteractive(interactive); solver.setListOfPoms(listOfPoms); solver.solveDependencies(); Modified: trunk/maven-debian-helper/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesSolver.java =================================================================== --- trunk/maven-debian-helper/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesSolver.java 2010-09-16 22:05:49 UTC (rev 12983) +++ trunk/maven-debian-helper/maven-packager-utils/src/main/java/org/debian/maven/packager/DependenciesSolver.java 2010-09-16 22:14:29 UTC (rev 12984) @@ -25,6 +25,8 @@ import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.debian.maven.repo.*; @@ -93,6 +95,7 @@ {"org.codehaus.mojo", "dashboard-maven-plugin"}, {"org.codehaus.mojo", "emma-maven-plugin"}, {"org.codehaus.mojo", "sonar-maven-plugin"}, + {"org.codehaus.mojo", "surefire-report-maven-plugin"}, {"org.jboss.maven.plugins", "maven-jdocbook-plugin"}, }; private static final String[][] TEST_PLUGINS = { @@ -113,6 +116,7 @@ {"org.apache.maven.wagon", "wagon-http-lightweight"}, {"org.apache.maven.wagon", "wagon-scm"}, {"org.apache.maven.wagon", "wagon-webdav"}, + {"org.apache.maven.wagon", "wagon-webdav-jackrabbit"}, {"org.jvnet.wagon-svn", "wagon-svn"}, }; @@ -128,8 +132,8 @@ private List issues = new ArrayList(); private List projectPoms = new ArrayList(); private List toResolve = new ArrayList(); - private Set knownProjectDependencies = new HashSet(); - private Set ignoredDependencies = new HashSet(); + private Set knownProjectDependencies = new TreeSet(); + private Set ignoredDependencies = new TreeSet(); private Set compileDepends = new TreeSet(); private Set testDepends = new TreeSet(); private Set runtimeDepends = new TreeSet(); @@ -139,10 +143,13 @@ private boolean checkedAptFile; private boolean runTests; private boolean generateJavadoc; - private boolean nonInteractive; + private boolean interactive = true; private boolean askedToFilterModules = false; private boolean filterModules = false; private Map pomInfoCache = new HashMap(); + // Keep the previous selected rule for a given version + private Map versionToRules = new HashMap(); + private List defaultRules = new ArrayList(); public DependenciesSolver() { pomTransformer.setVerbose(true); @@ -150,6 +157,16 @@ pomTransformer.getIgnoreRules().setDescription(readResource("maven.ignoreRules.description")); pomTransformer.getPublishedRules().setDescription(readResource("maven.publishedRules.description")); cleanIgnoreRules.setDescription(readResource("maven.cleanIgnoreRules.description")); + + Rule toDebianRule = new Rule("s/.*/debian/"); + toDebianRule.setDescription("Change the version to the symbolic 'debian' version"); + Rule keepVersionRule = new Rule("*"); + keepVersionRule.setDescription("Keep the version"); + Rule customRule = new Rule("CUSTOM"); + customRule.setDescription("Custom rule"); + defaultRules.add(toDebianRule); + defaultRules.add(keepVersionRule); + defaultRules.add(customRule); } private static String readResource(String resource) { @@ -226,7 +243,7 @@ } private boolean askIgnoreDependency(String sourcePomLoc, Dependency dependency, String message, boolean defaultToIgnore) { - if (nonInteractive) { + if (!interactive) { return false; } System.out.println(); @@ -246,8 +263,8 @@ } } - public void setNonInteractive(boolean nonInteractive) { - this.nonInteractive = nonInteractive; + public void setInteractive(boolean interactive) { + this.interactive = interactive; } private class ToResolve { @@ -417,17 +434,22 @@ } if (exploreProjects) { - File pom = new File(baseDir, "pom.xml"); - if (pom.exists()) { - projects.add(pom); - } else { - pom = new File(baseDir, "debian/pom.xml"); + File pom; + if (pomTransformer.getListOfPOMs().getPomOptions().isEmpty()) { + pom = new File(baseDir, "pom.xml"); if (pom.exists()) { projects.add(pom); } else { - System.err.println("Cannot find the POM file"); - return; + pom = new File(baseDir, "debian/pom.xml"); + if (pom.exists()) { + projects.add(pom); + } else { + System.err.println("Cannot find the POM file"); + return; + } } + } else { + pom = new File(baseDir, pomTransformer.getListOfPOMs().getFirstPOM()); } resolveDependencies(pom); } else { @@ -450,6 +472,11 @@ } private void resolveDependencies(File projectPom) { + + if (getPOMOptions(projectPom) != null && getPOMOptions(projectPom).isIgnore()) { + return; + } + String pomRelPath = projectPom.getAbsolutePath().substring(baseDir.getAbsolutePath().length() + 1); boolean noParent = false; @@ -463,7 +490,7 @@ getRepository().registerPom(projectPom, pom); } catch (DependencyNotFoundException e) { System.out.println("Cannot find parent dependency " + e.getDependency()); - if (!nonInteractive) { + if (interactive) { noParent = askIgnoreDependency(pomRelPath, pom.getParent(), "Ignore the parent POM for this POM?"); if (noParent) { pom.setParent(null); @@ -504,6 +531,83 @@ } } + // Previous rule from another run + boolean explicitlyMentionedInRules = false; + for (Iterator i = pomTransformer.getRules().findMatchingRules(pom.getThisPom()).iterator(); + i.hasNext(); ) { + DependencyRule previousRule = (DependencyRule) i.next(); + if (!previousRule.equals(DependencyRule.TO_DEBIAN_VERSION_RULE) && + !previousRule.equals(DependencyRule.TO_DEBIAN_VERSION_RULE) && + previousRule.matches(pom.getThisPom())) { + explicitlyMentionedInRules = true; + break; + } + } + + if (interactive && !explicitlyMentionedInRules) { + String version = pom.getThisPom().getVersion(); + 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(); + + if (versionToRules.containsKey(version)) { + choices.add(versionToRules.get(version)); + } + + Pattern p = Pattern.compile("(\\d+)(\\..*)"); + Matcher matcher = p.matcher(version); + if (matcher.matches()) { + String mainVersion = matcher.group(1); + Rule mainVersionRule = new Rule("s/" + mainVersion + "\\../" + + mainVersion + ".x/"); + mainVersionRule.setDescription("Replace all versions starting with " + + mainVersion + ". by " + mainVersion + ".x"); + if (!choices.contains(mainVersionRule)) { + choices.add(mainVersionRule); + } + } + for (Iterator i = defaultRules.iterator(); i.hasNext(); ) { + Rule rule = (Rule) i.next(); + if (!choices.contains(rule)) { + choices.add(rule); + } + } + + int count = 1; + for (Iterator i = choices.iterator(); i.hasNext(); count++) { + Rule rule = (Rule) i.next(); + if (count == 1) { + System.out.print("[1]"); + } else { + System.out.print(" " + count + " "); + } + System.out.println(" - " + rule.getDescription()); + } + System.out.print("> "); + String s = readLine().trim().toLowerCase(); + int choice = 1; + try { + choice = Integer.parseInt(s); + } catch (Exception ignore) { + } + + Rule selectedRule = (Rule) 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/)"); + System.out.print("> "); + s = readLine().trim().toLowerCase(); + selectedRule = new Rule(s); + selectedRule.setDescription("My custom rule " + s); + defaultRules.add(selectedRule); + } + + String dependencyRule = pom.getThisPom().getGroupId() + " " + pom.getThisPom().getArtifactId() + + " " + pom.getThisPom().getType() + " " + selectedRule.toString(); + pomTransformer.getRules().add(new DependencyRule(dependencyRule)); + } + if (pom.getParent() != null) { POMInfo parentPom = getRepository().searchMatchingPOM(pom.getParent()); if (parentPom == null || parentPom.equals(getRepository().getSuperPOM())) { @@ -527,7 +631,7 @@ resolveDependenciesLater(projectPom, POMInfo.EXTENSIONS, true, true, false); if (exploreProjects && !pom.getModules().isEmpty()) { - if (!nonInteractive && !askedToFilterModules) { + if (interactive && !askedToFilterModules) { System.out.println("This project contains modules. Include all modules?"); System.out.print("[y]/n > "); String s = readLine().trim().toLowerCase(); @@ -552,8 +656,7 @@ } File tmpDest = File.createTempFile("pom", ".tmp"); tmpDest.deleteOnExit(); - String pomRelPath = projectPom.getAbsolutePath().substring(baseDir.getAbsolutePath().length() + 1); - ListOfPOMs.POMOptions options = pomTransformer.getListOfPOMs().getPOMOptions(pomRelPath); + ListOfPOMs.POMOptions options = getPOMOptions(projectPom); boolean noParent = false; if (options != null) { noParent = options.isNoParent(); @@ -563,6 +666,12 @@ return info; } + private ListOfPOMs.POMOptions getPOMOptions(File pom) { + String pomRelPath = pom.getAbsolutePath().substring(baseDir.getAbsolutePath().length() + 1); + ListOfPOMs.POMOptions options = pomTransformer.getListOfPOMs().getPOMOptions(pomRelPath); + return options; + } + private void resetPOM(File projectPom) { pomInfoCache.remove(projectPom.getAbsolutePath()); } @@ -640,6 +749,7 @@ } } } + if (pom == null && "maven-plugin".equals(dependency.getType())) { List matchingPoms = getRepository().searchMatchingPOMsIgnoreVersion(dependency); if (matchingPoms.size() > 1) { @@ -652,6 +762,7 @@ // automatically at build time } } + if (pom == null) { if (!management) { if ("maven-plugin".equals(dependency.getType()) && packageType.equals("ant")) { @@ -727,6 +838,7 @@ } } } + String mavenRules = (String) pom.getProperties().get("debian.mavenRules"); if (mavenRules != null) { StringTokenizer st = new StringTokenizer(mavenRules, ","); @@ -913,7 +1025,7 @@ } else if (arg.equals("--generate-javadoc")) { solver.setGenerateJavadoc(true); } else if (arg.equals("--non-interactive")) { - solver.setNonInteractive(true); + solver.setInteractive(false); } i = inc(i, args); } Modified: trunk/maven-debian-helper/maven-packager-utils/src/test/java/org/debian/maven/packager/DependenciesSolverTest.java =================================================================== --- trunk/maven-debian-helper/maven-packager-utils/src/test/java/org/debian/maven/packager/DependenciesSolverTest.java 2010-09-16 22:05:49 UTC (rev 12983) +++ trunk/maven-debian-helper/maven-packager-utils/src/test/java/org/debian/maven/packager/DependenciesSolverTest.java 2010-09-16 22:14:29 UTC (rev 12984) @@ -62,7 +62,7 @@ solver.setPackageName("libplexus-active-collections-java"); solver.setPackageType("maven"); solver.setListOfPoms(new File(testDir, "libplexus-active-collections-java.poms")); - solver.setNonInteractive(true); + solver.setInteractive(false); solver.solveDependencies(); Modified: trunk/maven-debian-helper/pom.xml =================================================================== --- trunk/maven-debian-helper/pom.xml 2010-09-16 22:05:49 UTC (rev 12983) +++ trunk/maven-debian-helper/pom.xml 2010-09-16 22:14:29 UTC (rev 12984) @@ -4,7 +4,7 @@ <groupId>org.debian.maven</groupId> <artifactId>maven-debian</artifactId> - <version>1.1</version> + <version>1.2</version> <packaging>pom</packaging> <name>helper tools for using Maven to build Debian packages</name> Modified: trunk/maven-debian-helper/share/cdbs/1/class/maven.mk =================================================================== --- trunk/maven-debian-helper/share/cdbs/1/class/maven.mk 2010-09-16 22:05:49 UTC (rev 12983) +++ trunk/maven-debian-helper/share/cdbs/1/class/maven.mk 2010-09-16 22:14:29 UTC (rev 12984) @@ -94,7 +94,7 @@ before-mvn-build:: after-mvn-build:: -cleanbuilddir:: DEB_PATCHPOMS_ARGS += --clean-ignore-rules=debian/maven.cleanIgnoreRules +cleanbuilddir:: DEB_PATCHPOMS_ARGS += --ignore-rules=debian/maven.ignoreRules --clean-ignore-rules=debian/maven.cleanIgnoreRules cleanbuilddir:: maven-sanity-check post-patches debian/maven-repo -$(DEB_MAVEN_INVOKE) $(DEB_MAVEN_CLEAN_TARGET) $(RM) -r $(DEB_MAVEN_REPO) debian/stamp-maven-build _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/mailman/listinfo/pkg-java-commits

