Hello Mark! The work I have done is with almost no maven experience so I will try to understand what you are asking and answer.
Let me first describe how it works now. The maven-site job is job with everything. It checks out argouml (and argouml-actionscript3) from trunk and runs maven targets install and site using the file argouml/tools/maven/toppom.xml. This includes running all tests, checkstyle, pmd and findbugs. This also installs the argouml/trunk/pom.xml (argouml-core) in the local repository as a snapshot. The argouml-tools and parentpom jobs just stores their respective poms in the local repository. These poms are used by other jobs. All other maven jobs (argouml-actionscript3, argouml-app, argouml-core-diagrams-activity2, argouml-core-diagrams-class2, argouml-core-diagrams-deployment2, argouml-core-diagrams-sequence2, argouml-core-diagrams-state2, argouml-core-diagrams-structure2, argouml-core-model, argouml-core-model-euml, argouml-core-model-mdr, argouml-core-notation, argouml-core-transformer, and argouml-core-umlpropertypanels) just checks out the specific subproject, fetches libraries from the argouml maven2 repository of released artifacts and fetches poms and newly built snapshot versions of things built by other jobs from the local repository. These uses the install target that runs all tests and installs the resulting jar in the local repository. The Jenkins/Hudson maven plugin has functions that uses the knowledge of things deployed in the local repository to start jobs when dependencies are updated. This can be seen as Upstream projects and Downstream projects on each project. For an example, see http://closettop.homelinux.org:8080/job/argouml-app/. I will now attempt to answer your questions. *How mavenized is the rest of the build currently?* So far my goal has been merely to avoid maintaining tools for the static checks so an update of checkstyle of findbugs will be a simple change in a single file and to use Jenkins reports. * * *Do you build deployable artifacts?* I am not sure. They are not signed, the build host does not have the key, but they are deployed in the local repository on the build host.* * *Do you build JAR files with maven?* Yes, jar files are installed in the local repository and used by other jobs. * * *Do the JAR files contain the manifest file and appropriate META-INF directories?* I am not sure, I don't think so. I have not bothered about this since the jars in the local repository are only used to build and run tests in other maven jobs. * * *Do you build installable artifacts?* No. * * *Does the build include assemblies that contain all of the dependent JARs?* No. * * *Does the build create the webstart artifacts, the Mac DMG, and Linux installs? Have you tried creating RPMs and pkgs for RedHat and Ubuntu respectively?* No. *Do all the projects have at least a minimal pom file and appropriate references to the parent pom? I noticed that argo-core-diagrams-uml2 didn't, but I don't know if this was intentional or not.* No, just the projects mentioned above has poms. My plan is to extend this one project at the time but I also get the feeling that it would be good if this could be reviewed by someone with more maven knowledge, like you, to make sure that this is the right direction. *Do the unit tests run, and do you currently generate a report from the unit tests?* Yes, well, the Jenkins/Hudson has its own reports that also has the time dimensions (to see when a test starts to fail and stops failing) see http://closettop.homelinux.org:8080/job/argouml-app/. The maven-site job also runs the mvaen site target to generate the maven site but I see now that there is no rapport from the JUnit tests while the other reports are there. See here: http://closettop.homelinux.org:8080/job/maven-site/site/argouml-app/project-reports.html *Do you currently deploy the artifacts to a mvn repository (like artifactory) so that if you're doing a build of module you don't have to check out all of the other argouml projects? If it's deployed to a mvn repository, and you do a mvn build, it will download the JARs for argouml-core* and any other dependent projects. This minimizes the download time, and lets people get up and running fairly quickly. * SNAPSHOT jars are only installed in the local repository on the build host so that the other jobs can benefit from this. Other developers cannot currently benefit from these builds. The java-interfaces jar should be build as a SNAPSHOT and installed in the local repository by a job but I have not dared to run the mdr generation from maven. Instead java-interfaces jar is treated as an external library and taken from the argouml maven2 repository. The antlr builds, I have not dared to address either. In an attempt not to confuse things I have confused things by using different version numbers for the maven-builds SNAPSHOT jars and for the development and stable builds. The maven-builds are only at 0.2. I have attempted to state this version number in as few places as possible. I found a maven discussion post with some pointers to do this. /Linus 2011/8/9 Mark Fortner <[email protected]> > Hi Linus, > How mavenized is the rest of the build currently? > > - Do you build deployable artifacts? > - Do you build JAR files with maven? > - Do the JAR files contain the manifest file and appropriate > META-INF directories? > - Do you build installable artifacts? > - Does the build include assemblies that contain all of the > dependent JARs? > - Does the build create the webstart artifacts, the Mac DMG, and > Linux installs? Have you tried creating RPMs and pkgs for RedHat and > Ubuntu > respectively? > - Do all the projects have at least a minimal pom file and appropriate > references to the parent pom? I noticed that argo-core-diagrams-uml2 > didn't, but I don't know if this was intentional or not. > - Do the unit tests run, and do you currently generate a report from > the unit tests? > - Do you currently deploy the artifacts to a mvn repository (like > artifactory) so that if you're doing a build of module you don't have to > check out all of the other argouml projects? If it's deployed to a mvn > repository, and you do a mvn build, it will download the JARs for > argouml-core* and any other dependent projects. This minimizes the > download > time, and lets people get up and running fairly quickly. > > Mark > > > On Fri, Jul 15, 2011 at 4:36 PM, Linus Tolke Tigris <[email protected]>wrote: > >> Hello again Mark! >> >> I think I have solved the checksum problem now. I still get errors that >> the poms are invalid though. I don't understand that problem. >> >> /Linus >> >> >> 2011/7/16 Mark Fortner <[email protected]> >> >>> Hi Linus, >>> When I do a build, I get messages like this: >>> >>> [WARNING] *** CHECKSUM FAILED - Error retrieving checksum file for >>> org/argouml/argouml-mdr/0.32/argouml-mdr-0.32.jar - IGNORING >>> >>> [WARNING] *** CHECKSUM FAILED - Error retrieving checksum file for >>> org/netbeans/mdr/nbmdr/0.0-5/nbmdr-0.0-5.jar - IGNORING >>> >>> [WARNING] *** CHECKSUM FAILED - Error retrieving checksum file for >>> org/argouml/argouml-mdr/0.32/argouml-mdr-0.32.pom - IGNORING >>> [WARNING] POM for 'org.argouml:argouml-mdr:pom:0.32:test' is invalid. >>> >>> Its dependencies (if any) will NOT be available to the current build. >>> [WARNING] POM for 'org.argouml:java-interfaces:pom:0.32:test' is invalid. >>> >>> >>> And a few like this: >>> >>> Downloading: >>> http://argouml-downloads.tigris.org/maven2/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom >>> [INFO] Unable to find resource >>> 'org.codehaus.plexus:plexus-containers:pom:1.0-alpha-16' in repository >>> argouml (http://argouml-downloads.tigris.org/maven2) >>> Downloading: >>> http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom >>> >>> >>> The project still builds properly though. >>> >>> Mark >>> >>> >>> On Fri, Jul 15, 2011 at 2:52 PM, Linus Tolke Tigris <[email protected]>wrote: >>> >>>> Hello Mark! >>>> >>>> I think I have understood how to synchronize the version numbers >>>> throughout the maven pom files. It is, however, not synchronized with the >>>> version numbers of the stable and development builds. >>>> >>>> What are the old versions you are referring to? I find the >>>> java-interfaces jar. Is that the one? >>>> >>>> The maven build uses only tools downloaded from maven (with version >>>> specified in the parentpom.xml). No ant files or property files are used so >>>> the pom files constitute a complete set of configuration files. As you can >>>> see I have managed to get it to build in the Hudson server. What is it that >>>> is not working for you? >>>> >>>> /Linus >>>> >>>> >>>> 2011/7/15 Mark Fortner <[email protected]> >>>> >>>>> Hi Linus, >>>>> Now that you have the new build machine setup, have you made any >>>>> progress with updating the maven pom files? There still seem to be a lot >>>>> of >>>>> references to an old mvn repo, where it tries to download outdated >>>>> artifacts. I did a checkout recently to setup a new machine with argouml >>>>> and >>>>> I'd forgotten how painful it is to get a argouml into a buildable state. >>>>> Not to mention the fact that there's a dissertation, and a whole lot of >>>>> tools checked into the svn repo. >>>>> >>>>> Regards, >>>>> >>>>> Mark >>>>> >>>>> >>>>> >>>>> On Sun, Jun 5, 2011 at 5:54 AM, Linus Tolke Tigris >>>>> <[email protected]>wrote: >>>>> >>>>>> Hello all! >>>>>> >>>>>> I have now replaced the old host running the continuous integration >>>>>> and nightly build with a new one. It is a P4 Dual 2.6GHz with 2GB memory >>>>>> instead of a P2 400MHz with 512M, Ubuntu instead of Debian and Jenkins >>>>>> instead of Hudson. Everything is a lot quicker. >>>>>> >>>>>> /Linus >>>>>> >>>>>> >>>>> >>>> >>> >> ------------------------------------------------------ http://argouml.tigris.org/ds/viewMessage.do?dsForumId=450&dsMessageId=2813170 To unsubscribe from this discussion, e-mail: [[email protected]]. To be allowed to post to the list contact the mailing list moderator, email: [[email protected]]
