Re: How to bootstrap Maven
On Sunday, January 08, 2012 03:37:23 PM Ludovic Claude wrote: Hello Daniel, You have done an excellent job here to bootstrap the build of Maven 3. I Umm, I was working with the source packages from unstable, which afaict still has Maven 2. cannot think of anothwe way of doing it. It's a pity that Maven 3 OK. At least I didn't need to resort to the brute force of dump all the sources into one directory and compile it all together, then build a single sumo jar file. Which wouldn't even really work in this case given the necessity for Plexus component and Maven plugin descriptors in individual jar files. requires so much bootstrapping, I have packaged Maven 2.2.2 and was very careful to avoid such bootstrapping. But it's a long exercise to convert a Maven build into an Ant build, even with the help of maven-ant-helper. I have started to remove the need to use Maven for building some of those packages (currently plexus-compiler builds without Maven in the latest commit in Git). I'm also improving mh_make --ant (from maven-debian-helper) to assist the generation of all packaging files required to build and package a Maven project with Ant. It should be ready in a few days, then we can run this tool on the packages that you have bootstrapped and remove this circular build dependency on Maven. Good to hear. Your problem with maven-scm should also be fixed by fully converting the build of maven-scm to Ant, as there seem to be some internal build dependency that is not met by your simple build script. I'm not really sure about that. As it turned out, if I installed all the jars that did build (which was everything except for the Maven plugin), and then reran the build, then it succeeded. So, it would be interesting to try this experiment: in a vanilla pbuilder chroot, install all the build dependencies of maven-scm, then force the removal of libmaven-scm-java (the wagon-scm provider shouldn't be needed or used for Debian package builds anyway) and see if one can reproduce the error. So anyway, I've about finished this phase of the bootstrapping, and pbuildd is doing yet another rebuild of all the packages. Next, I need to figure out how to bootstrap the osgi-compendium - geronimo-jpa-2.0-spec - geronimo-osgi- support - osgi-compendium and bnd - bindex circular dependencies, and spring-build's self-build-depends, to get a full libxbean-java build. And the whole jbossas4 / hibernate tangle, to get a full excalibur-logger build. And aspectj's self-build-depends (that one looks like it might be a self-hosting compiler type of thing, for which I can have pbuildd download a prebuilt libaspectj-java, if necessary). -- Daniel Schepler __ This is the maintainer address of Debian's Java team http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-maintainers. Please use debian-j...@lists.debian.org for discussions and questions.
Re: How to bootstrap Maven
Hello Daniel, You have done an excellent job here to bootstrap the build of Maven 3. I cannot think of anothwe way of doing it. It's a pity that Maven 3 requires so much bootstrapping, I have packaged Maven 2.2.2 and was very careful to avoid such bootstrapping. But it's a long exercise to convert a Maven build into an Ant build, even with the help of maven-ant-helper. I have started to remove the need to use Maven for building some of those packages (currently plexus-compiler builds without Maven in the latest commit in Git). I'm also improving mh_make --ant (from maven-debian-helper) to assist the generation of all packaging files required to build and package a Maven project with Ant. It should be ready in a few days, then we can run this tool on the packages that you have bootstrapped and remove this circular build dependency on Maven. Your problem with maven-scm should also be fixed by fully converting the build of maven-scm to Ant, as there seem to be some internal build dependency that is not met by your simple build script. Ludovic On 07/01/2012 23:14, Daniel Schepler wrote: In my overall pbuildd project, the idea is to bootstrap the Debian archive from the package sources and a minimal starting chroot, using cycle breaker scripts where necessary. As part of that project, I'm trying to figure out how one would bootstrap the Maven packages (and those of their dependencies which use maven-debian-helper). So far I have a big long pseudocode script which has gotten me a significant part of the way towards that goal. The idea is to make heavy use of maven-ant-helper, plus building just selected parts of large compound packages like wagon, doxia, etc. The questions I have right now are: 1. Is there some much simpler way to do this that I'm missing? 2. When I get to maven-scm, I run into this build error -- this is a log where I tried adding maven.test.skip=true to debian/maven.properties in order to verify that it's not a test skipping ahead in the dependency chain that's causing this. ... [INFO] [INFO] Building Maven SCM TFS Provider [INFO]task-segment: [package] [INFO] [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (ANSI_X3.4-1968 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /tmp/maven-scm/maven-scm-1.3/maven- scm-providers/maven-scm-provider-tfs/src/main/resources [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 19 source files to /tmp/maven-scm/maven-scm-1.3/maven-scm- providers/maven-scm-provider-tfs/target/classes [INFO] [plexus:descriptor {execution: default}] [INFO] Discovered 1 component descriptors(s) [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (ANSI_X3.4-1968 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /tmp/maven-scm/maven-scm-1.3/maven- scm-providers/maven-scm-provider-tfs/src/test/resources [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Not compiling test sources [INFO] [surefire:test {execution: default-test}] [INFO] Tests are skipped. [INFO] [jar:jar {execution: default-jar}] [INFO] Building jar: /tmp/maven-scm/maven-scm-1.3/maven-scm-providers/maven- scm-provider-tfs/target/maven-scm-provider-tfs-1.3.jar [INFO] [INFO] Building Maven SCM Standard Providers [INFO]task-segment: [package] [INFO] [INFO] [site:attach-descriptor {execution: default-attach-descriptor}] [INFO] [INFO] Building Maven SCM Client [INFO]task-segment: [package] [INFO] [INFO] [plexus:merge-descriptors {execution: merge}] [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (ANSI_X3.4-1968 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 1 resource [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 1 source file to /tmp/maven-scm/maven-scm-1.3/maven-scm- client/target/classes [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (ANSI_X3.4-1968 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /tmp/maven-scm/maven-scm-1.3/maven- scm-client/src/test/resources [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Not compiling test sources [INFO]
How to bootstrap Maven
In my overall pbuildd project, the idea is to bootstrap the Debian archive from the package sources and a minimal starting chroot, using cycle breaker scripts where necessary. As part of that project, I'm trying to figure out how one would bootstrap the Maven packages (and those of their dependencies which use maven-debian-helper). So far I have a big long pseudocode script which has gotten me a significant part of the way towards that goal. The idea is to make heavy use of maven-ant-helper, plus building just selected parts of large compound packages like wagon, doxia, etc. The questions I have right now are: 1. Is there some much simpler way to do this that I'm missing? 2. When I get to maven-scm, I run into this build error -- this is a log where I tried adding maven.test.skip=true to debian/maven.properties in order to verify that it's not a test skipping ahead in the dependency chain that's causing this. ... [INFO] [INFO] Building Maven SCM TFS Provider [INFO]task-segment: [package] [INFO] [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (ANSI_X3.4-1968 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /tmp/maven-scm/maven-scm-1.3/maven- scm-providers/maven-scm-provider-tfs/src/main/resources [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 19 source files to /tmp/maven-scm/maven-scm-1.3/maven-scm- providers/maven-scm-provider-tfs/target/classes [INFO] [plexus:descriptor {execution: default}] [INFO] Discovered 1 component descriptors(s) [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (ANSI_X3.4-1968 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /tmp/maven-scm/maven-scm-1.3/maven- scm-providers/maven-scm-provider-tfs/src/test/resources [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Not compiling test sources [INFO] [surefire:test {execution: default-test}] [INFO] Tests are skipped. [INFO] [jar:jar {execution: default-jar}] [INFO] Building jar: /tmp/maven-scm/maven-scm-1.3/maven-scm-providers/maven- scm-provider-tfs/target/maven-scm-provider-tfs-1.3.jar [INFO] [INFO] Building Maven SCM Standard Providers [INFO]task-segment: [package] [INFO] [INFO] [site:attach-descriptor {execution: default-attach-descriptor}] [INFO] [INFO] Building Maven SCM Client [INFO]task-segment: [package] [INFO] [INFO] [plexus:merge-descriptors {execution: merge}] [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (ANSI_X3.4-1968 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 1 resource [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 1 source file to /tmp/maven-scm/maven-scm-1.3/maven-scm- client/target/classes [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (ANSI_X3.4-1968 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /tmp/maven-scm/maven-scm-1.3/maven- scm-client/src/test/resources [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Not compiling test sources [INFO] [surefire:test {execution: default-test}] [INFO] Tests are skipped. [INFO] [jar:jar {execution: default-jar}] [INFO] Building jar: /tmp/maven-scm/maven-scm-1.3/maven-scm- client/target/maven-scm-client-1.3.jar [INFO] [INFO] Building Maven SCM Plugin [INFO]task-segment: [package] [INFO] [INFO] [ERROR] BUILD ERROR [INFO] [INFO] Failed to resolve artifact. Missing: -- 1) org.apache.maven.scm:maven-scm-providers-standard:pom:1.3 Path to dependency: 1) org.apache.maven.plugins:maven-scm-plugin:maven-plugin:1.3 2) org.apache.maven.scm:maven-scm-providers-standard:pom:1.3 -- 1 required artifact is missing. for artifact: org.apache.maven.plugins:maven-scm-plugin:maven-plugin:1.3 from the specified remote repositories: central (http://repo1.maven.org/maven2) NOTE: Maven is executing in offline mode. Any artifacts not already in your local repository