You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 28 Next »

Prerequisite

1. Use Genesis 2.0 as a parent pom

<parent>
    <groupId>org.apache.geronimo.genesis</groupId>
    <artifactId>genesis-java5-flava</artifactId>
    <version>2.0</version>
</parent>
  • genesis-java5-flava-2.0.pom
    • genesis-default-flava-2.0.pom
      • genesis-2.0.pom
        • apache-6.pom

2. Use Maven 2.2.1 (not try if 2.0.10 or 2.0.11 can run)

<settings>
...
  <servers>
    <!-- To publish a snapshot of some part of Maven -->
    <server>
      <id>apache.snapshots.https</id>
      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
      <password> <!-- YOUR APACHE LDAP PASSWORD --> </password>
    </server>
    <!-- To publish a website of some part of Maven -->
    <server>
      <id>apache.website</id>
      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
      <filePermissions>664</filePermissions>
      <directoryPermissions>775</directoryPermissions>
    </server>
    <!-- To stage a release of some part of Maven -->
    <server>
      <id>apache.releases.https</id>
      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
      <password> <!-- YOUR APACHE LDAP PASSWORD --> </password>
    </server>
    <!-- To stage a website of some part of Maven -->
    <server>
      <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy -->
      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
      <filePermissions>664</filePermissions>
      <directoryPermissions>775</directoryPermissions>
    </server>
    ...
  </servers>
</settings>

3. Setup PGP Keys (for the ones who be the release manager the first time

Special changes for releasing the server 2.1.5

1. Add "all-subprojects" profile(Similar with what David Jencks did for 2.2)

By default, maven-release-plugin will use the default profile to search all the pom.xml files and auto-update the version numbers. But integration tests are often run from non-pom packaging projects, so We also need include them during the release plugin running. Hence we create a new "all-subprojects" profile:

  • /pom.xml
    This profile is just the same as default profile.
            <profile>
                <id>all-subprojects</id>
                <modules>
                    <module>repository</module>
                    <module>buildsupport</module>
                    <module>testsupport</module>
                    <module>framework</module>
                    <module>plugins</module>
                    <module>assemblies</module>
                    <module>testsuite</module>
                </modules>
            </profile>
    
  • /framework/configs/pom.xml
    The config modules are all included by default, but the 4 integration test are not. So if we want this 4 projects' pom can be updated by maven-release-profile, we need explicitly point out.
            <profile>
                <id>all-subprojects</id>
                <modules>
                    <module>geronimo-gbean-deployer/src/it/j2ee-system-it1</module>
                    <module>geronimo-gbean-deployer/src/it/j2ee-system-it2</module>
                    <module>geronimo-gbean-deployer/src/it/metadatageneration-it3</module>
                    <module>geronimo-gbean-deployer/src/it/metadatageneration-it4</module>
                </modules>
            </profile>
    
    btw, I refactored the names of above 4 itest to make them the same with 2.2, i.e.
    • j2ee-system -> j2ee-system-it1
    • j2ee-system-2 -> j2ee-system-it2
    • metadatageneration -> metadatageneration-it3
    • metadatageneration-2 -> metadatageneration-it4
  • /plugins/pom.xml (and some others do not need to add "all-subprojects" profile)
    Not all the pom.xml must have an "all-subprojects" in file. If there is no special projects as above, you can just leave the pom as is (take /plugins/pom.xml as example).
  • /testsuite/pom.xml and its childern
    A lot of efforts ware put on testsuite. When run with "all-subprojects" profile to do a release, we don't need really run and pass the tests. Remember the goal of this profile is just to find all the sub-projects' pom files so that release-plugin can auto update their versions.
  • prepare the release
    mvn release:prepare -DdryRun=true -Pall-subprojects -Papache-release -Dtest=false
    
    In above command -Dtest=false seems not take effect?? So, currently I add following in root pom's all-subprojects profile.
    <properties>
      <maven.test.skip>true</maven.test.skip>
    </properties>
    
    and use the following command:
    mvn release:prepare -DdryRun=true -Pall-subprojects
    
    • Check if all pom.xml files have a pom.xml.tag generated
      Compare the quantity of the 2 files
    • and if the versions in pom.xml.tag are updated correctly,
      The only things that should be different between these files are the <version> and <scm> elements.
    • and if there is no "SNAPSHOT" in pom.xml.tag files.
      Just find in files..

2. Don't deploy the test artifacts to maven repo

Because there are a lot of sub-projects that not need to be released, such as integration tests and testsuites, we need filter them out when do maven deploy:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <configuration>
            <skip>true</skip>
        </configuration>
    </plugin>
  • /framework/configs/geronimo-gbean-deployer/src/it/j2ee-system-it1/pom.xml
  • /framework/configs/geronimo-gbean-deployer/src/it/j2ee-system-it2/pom.xml
  • /framework/configs/geronimo-gbean-deployer/src/it/metadatageneration-it3/pom.xml
  • /framework/configs/geronimo-gbean-deployer/src/it/metadatageneration-it4/pom.xml
  • /testsuite/pom.xml

3. Other changes

  • Remove tools-maven-plugin and use the ianal-maven-plugin(defined in genesis-default-flava-2.0.pom) to verify-legal-files
    • and also add following in testsuite/pom.xml
                  <plugin>
                      <groupId>org.codehaus.mojo</groupId>
                      <artifactId>ianal-maven-plugin</artifactId>
                      <configuration>
                          <!-- Don't bother checking legal file here, we never publish them. -->
                          <skip>true</skip>
                      </configuration>
                  </plugin>
      
  • Remove a bunch of maven plugins definition in server root pom
  • Update xmlbeans-maven-plugin to 2.3.3 and remove all the following hacked codes:
                <!--
                HACK: Copy XmlBeans generated schemas.
                -->
                <plugin>
                    <groupId>org.apache.geronimo.buildsupport</groupId>
                    <artifactId>buildsupport-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>copy-xmlbeans-schemas</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
    

Release memo

1. NOTICE.txt files

  • Check the "Year" of copyright in all NOTICE.txt file.
  • Check the "Year" of copyright in plugins\welcome\geronimo-welcome\src\main\webapp\index.jsp

2. Before release, need manually update versions from 2.1.5-SNAPSHOT to 2.1.5

  • Update the VERSION in README.txt / RELEASE_NOTES-2.1.5-SNAPSHOT.txt, and rename to RELEASE_NOTES-2.1.5.txt
  • Update <version> properties in root pom.xml ?? (need update to <version>${version}</version>)
  • Update versions in "assemblies\geronimo-boilerplate-minimal\src\main\underlay\etcgsh-classworlds.conf"
  • Others
    • plugins\remote-deploy\geronimo-remote-deploy\src\main\webapp\WEB-INF\geronimo-web.xml
    • plugins\welcome\geronimo-welcome\src\main\webapp\WEB-INF\geronimo-web.xm
    • framework\modules\geronimo-plugin\src\test\resources\geronimo-plugins.xml
    • framework\configs\plugin\pom.xml   - DownloadedPluginRepos
    • framework\configs\geronimo-gbean-deployer\src\it\j2ee-system-it1\src\test\resources\META-INF\geronimo-plugin.xml
      framework\configs\geronimo-gbean-deployer\src\it\j2ee-system-it1\src\test\resources\META-INF\plan.xml
      framework\configs\geronimo-gbean-deployer\src\it\metadatageneration-it3\src\test\resources\META-INF\geronimo-plugin.xml
    • testsuite/webservices-testsuite/jaxrpc-tests/jaxrpc-war/src/main/webapp/WEB-INF/geronimo-web.xml  - jaxrpc-war
  • Not Applicable after 2.1.5:
    framework\modules\geronimo-upgrade\src\test\resources\gbean_1.xml
    framework\modules\geronimo-upgrade\src\test\resources\gbean_1_result.xml
    framework\configs\geronimo-gbean-deployer\src\it\j2ee-system-it2\src\test\resources\META-INF\geronimo-plugin.xml
    framework\configs\geronimo-gbean-deployer\src\it\j2ee-system-it2\src\test\resources\META-INF\plan.xml
    framework\configs\geronimo-gbean-deployer\src\it\metadatageneration-it4\src\test\resources\META-INF\geronimo-plugin.xml

3. After release, update versions to 2.1.6-SNAPSHOT

  • Update artifact-alias, add version 2.1.5 in artifact-alias after 2.1.5 release
    • /framework/configs/pom.xml
    • /plugins/client/pom.xml
    • /plugins/corba/client-corba-yoko/pom.xml
    • /plugins/pom.xml
  • Revert versions definition in README.txt / RELEASE_NOTES-2.1.5.txt,  rename to RELEASE_NOTES-2.1.6-SNAPSHOT.txt,
  • Update <version> properties from ${version} to 2.1.6-SNAPSHOT in root pom.xml so that can be built in mvn 2.0.10
  • Update versions in "assemblies\geronimo-boilerplate-minimal\src\main\underlay\etcgsh-classworlds.conf"
  • Others, same as in #2

4. Update geronimo-plugins.xml

5. Vote and Announce

  • 1. Vote in mailing list, meanwhile wait TCK results
  • 2. Promote stagine repo
  • 3. Announce in mailing list
  • 4. Post news in homepage
  • No labels