Details

    • Type: Improvement Improvement
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 0.8
    • Fix Version/s: 0.9
    • Component/s: Build
    • Labels:
      None
    • Complexity:
      Intermediate
    • Number of attachments :
      0

      Description

      From mailing list:

      Hi,
      
      Context:
      
      I'm preparing the Cargo 0.9 and Maven plugin 0.3 releases and I'd like to do them using the Maven2 release plugin. However before we're able to use it we need to clean up our structure. Indeed we need to have a separate directory tree per release cycle. As of today we have 2 release cycles: one for Cargo core (v0.9) and one for the Cargo Maven2 plugin (v0.3). We're doing something messy in mixing the branches/tags for both in the same location. I think we need to bite the bullet and make it right.
      
      Here's the new structure I'm proposing:
      
      cargo/
         pom/ (version starts at 1)
          |_ trunk
          |_ branches
          |_ tags
        core/ (version continues as 0.9, 1.0, etc)
          |_ trunk
            |_ api/
            |_ containers/
            |_ uberjar/
            |_ documentation/
            |_ samples/
              |_ testdata/
              |_ java/
          |_ branches
          |_ tags
        extensions/
          |_ trunk
            |_ ant (includes functional tests) (version continues as 0.9, 1.0, etc)
            |_ maven (includes functional tests) (version continues as 0.9, 1.0, etc)
            |_ maven2 (includes functional tests) (version continues as 0.3, 1.0, etc)
              |_ plugin/
              |_ archetypes/
          |_ branches
          |_ tags
        sandbox/
          |_ intellijidea/
          |_ netbeans/
        pom.xml (top level pom just to build all the modules, depends on pom/trunk/pom.xml)
      
      Release process (in that order):
      
      * Release pom/ from time to time (whenever a release is required for core/ or extensions/)
      * Release core/ in one go (mvn release:prepare from core/trunk/ dir)
      * Release extensions/* separately for each extension (mvn release:prepare from each subdir: ant/, maven/, maven2/)
      
      In addition I'll create a svn:external called trunks to get the full directory structure above in one checkout.
      
      Note 1: In extensions/tags we will have the tags for the different modules. For example: ant-0.9, maven2-0.3, etc. We could have a different trunk/tags/branches for each extension but it sounds too cumbersome and not needed.
      
      Note 2: In the future I think we could have a top level containers/ directory too but I don't think we're ripe for this now so I'd rather do it in 2 steps and start easy.
      

        Activity

        Hide
        Vincent Massol added a comment -

        Remaining work:

        • The samples/extensions have not been ported yet
        • The m1 build has not been ported but there are m1 files lying around. We need to decide what to do about the m1 buid. I sent a vote email to remove it. Waiting for answers.
        • The core/documentation and core/samples are currently referenced from the top level pom.xml instead of the core/pom.xml. We'll need to reorganize this too. So far I've tried to keep the poms as they were.
        • We need to enable more containers in the default profile for sample/java so that the same default containers are run as for the m1 build
        • When building from top level trunks/ dir, Maven is looking for some artifacts in the remote repo before being building them. I've sent an email on the maven list as I have no idea why this is happening. Looks like a bug or limitation.
        • The top level pom.xml depends on pom/pom.xml so I guess it cannot have a module element to build it. This means our parent pom must always be present in the remote repo or the users who builds cargo needs to build pom/pom.xml manually first.
        • Disable the beetlejuice build (m1)
        • Activate the bambo build for Cargo's m2 build
        • Update the Building documentation on cargo.codehaus.org
        Show
        Vincent Massol added a comment - Remaining work: The samples/extensions have not been ported yet The m1 build has not been ported but there are m1 files lying around. We need to decide what to do about the m1 buid. I sent a vote email to remove it. Waiting for answers. The core/documentation and core/samples are currently referenced from the top level pom.xml instead of the core/pom.xml. We'll need to reorganize this too. So far I've tried to keep the poms as they were. We need to enable more containers in the default profile for sample/java so that the same default containers are run as for the m1 build When building from top level trunks/ dir, Maven is looking for some artifacts in the remote repo before being building them. I've sent an email on the maven list as I have no idea why this is happening. Looks like a bug or limitation. The top level pom.xml depends on pom/pom.xml so I guess it cannot have a module element to build it. This means our parent pom must always be present in the remote repo or the users who builds cargo needs to build pom/pom.xml manually first. Disable the beetlejuice build (m1) Activate the bambo build for Cargo's m2 build Update the Building documentation on cargo.codehaus.org
        Hide
        Vincent Massol added a comment -

        > Disable the beetlejuice build (m1)

        Done

        > Activate the bambo build for Cargo's m2 build

        Configured. Pending Codehaus admin to apply http://jira.codehaus.org/browse/HAUS-1442

        Show
        Vincent Massol added a comment - > Disable the beetlejuice build (m1) Done > Activate the bambo build for Cargo's m2 build Configured. Pending Codehaus admin to apply http://jira.codehaus.org/browse/HAUS-1442
        Hide
        Vincent Massol added a comment -
        Show
        Vincent Massol added a comment - URL for Bamboo: http://bamboo.ci.codehaus.org/browse/CARGO-TRUNKM2
        Hide
        Vincent Massol added a comment -

        First pass done. Adding new issue for the rest (CARGO-503)

        Show
        Vincent Massol added a comment - First pass done. Adding new issue for the rest ( CARGO-503 )

          People

          • Assignee:
            Vincent Massol
            Reporter:
            Vincent Massol
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: