Goal
The goal is to develop a strategy to migrate all existing Glast projects from Maven1 to Maven2 is as unobtrusive a way as possible. The reasons to switch to maven2 are
- Support for maven1 is fading away
- Netbeans6, due to be released before end-of-year, has support for maven2 built-in (but not maven1)
- Maven2 has many improvements, including simpler dependency management
We will not be able to move all projects over-night, so we need a strategy for which order to move projects, and how projects which have moved can continue to co-exist with projects which have not moved. We will need to provide clear instructions to developers to allow them to move their projects.
We should start with some simple projects, like org-glast-groupmanager.
Requirements
- We need to maintain the features we have in maven1, including
- Ability to check projects out and build them in Netbeans
- Ability to deploy projects using the built-in netbeans tomcat server (Netbeans deploy)
- Ability to use in-place deploy so that JSP pages can be edited and the effects seen immediately without the need to redeploy
- Ability to deploy projects from netbeans to the development (tomcat03) and production (tomcat*) tomcat servers.
- Ability for cruise-control to build projects. This should not be too hard since cruise-control has support for maven2
- Ability to deploy snapshots and releases to a central Glast maven2 repository
- Ability to deploy sites to http://glast-ground.slac.stanford.edu/docs
Possible additional features
- Right now there is a lot of boiler-plate code which has to be copied into each new Glast project. For freehep Mark set things up so their was a master project which other projects inherited from so that we didn't have to repeat the same information in each sub-project. A maven "archetype" for Glast projects might also be a good way to achieve this.
- Now that we have 12 tomcat servers it is difficult to remember which server each application should be deploy to. It would be nice to be able to do something like mvn -Dmode=prod tomcat:deploy and have the application automatically deploy to the correct location. This would require some type of custom maven plugin which would talk to the glastgen database.
For Developers
Developing Projects
Parent Repository
All projects have to specify in the pom file the repositories where to find the parent. So the following code is required in every project:
...
<repositories>
<repository>
<id>glast-maven2</id>
<name>GLAST Maven 2 central repository</name>
<url>http://glast-ground.slac.stanford.edu/maven2</url>
</repository>
<repository>
<id>glast-maven2-snapshots</id>
<name>GLAST Maven2 central SNAPSHOTS repository</name>
<url>http://glast-ground.slac.stanford.edu/maven2/SNAPSHOTS</url>
</repository>
</repositories>
JAR
Parent
A jar project should inherit from org-glast-maven-jar-project; so in your pom add:
...
<parent>
<groupId>glast</groupId>
<artifactId>org-glast-maven-jar-project</artifactId>
<version>1.2</version>
</parent>
WAR
Parent
A jar project should inherit from org-glast-maven-war-project; so in your pom add:
...
<parent>
<groupId>glast</groupId>
<artifactId>org-glast-maven-war-project</artifactId>
<version>1.2</version>
</parent>
Final Name
The final name of the war file is to be set in the pom file as:
...
<build>
<finalName>ServerMapping</finalName>
</build>
This name is the name of the produced war file and it must be identical to the Application's context. It is also used by the Maven Tomcat Deploy plugin to find the production deployment server.
Source Location
Maven2 expects the source files to be located in src/main/webapp. Some of our projects have the source code in src/webapp. To tell maven2 to look in the latter location add the following to your pom file:
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceDirectory>${basedir}/src/webapp</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
of this page is to keep track of our progress in ensuring that we will be able to support and maintain Fermi Data Handling code for the next decade.
The plan is to make sure that all projects have been:
- identified as active or inactive
- migrated to maven2
- converted to using SRS code base or generalize and turn into an SRS project
- added to SRS Hudson (and removed from Glast Hudson)
Once all the projects have been added to Hudson we have to make sure that:
- Each automated build will publish SNAPSHOT artifacts to the appropriate repository
- The documentation and javadoc are automatically built and deployed to the appropriate site directory
- It is possible to release the projects in Hudson
Eventually all Fermi web appilcations, servers, scripts etc currently in production must be replace with the converted code.
Applications
The following we applications are either old or not linked to a specific project
Application | Comment |
---|---|
LatOps | Obsolete we application. It is still on tomcat11 to get documentation off of it. Not linked from glast-ground. |
maven2 | Fermi Maven2 repository |
docs | Maven generated documentation. It points to /nfs/slac/g/glast/ground/docs/ |
workbook | Redirects to new workbook location: http://www.slac.stanford.edu/exp/glast/wb/prod/ |
DataPortalWiredBeta | Test version of DataPortalWired |
DataPortalFitsSkimmer | To be removed |
DataPortalGateway | Maybe we don't need it anymore |
Installer | Will become Obsolete |
Projects moved to SRS
The following projects have been generalized.
Project Name | Was | Comments | Contact | Application |
---|---|---|---|---|
org-srs-base-application | org-glast-base-application |
| max |
|
org-srs-base-application-gui | org-glast-base-application |
| max |
|
org-srs-batch-allocations |
| Genral application for batch share. Lined in from Pipeline | chee |
|
org-srs-commons-web | org-glast-commons-web |
| max | Commons |
org-srs-datacat-client | org-glast-datacat-client |
| brian |
|
org-srs-datacat-server | org-glast-datacat-server | This is the Crawler | tony |
|
org-srs-datacat-sp | org-glast-datacat-sp |
| brian |
|
org-srs-datacatalog-web | org-glast-datacatalog-web | Is this in production for Fermi? | brian | DataCatalog |
org-srs-datahandling-common | org-glast-datahandling-common |
| brian |
|
org-srs-datainfo | was a part of org-glast-base-application |
| max |
|
org-srs-decorator | was a part of org-glast-base-web |
| max | Decorator |
org-srs-groupmanager | org-glast-groupmanager |
| karen | GroupManager |
org-srs-jobcontrol | org-glast-jobcontrol | An instance of this is running for test. Production is still glast. | tony |
|
org-srs-pipeline-client | org-glast-pipeline-client |
| tony/brian |
|
org-srs-pipeline-server | org-glast-pipeline-server |
| tony/brian |
|
org-srs-pipeline-web | org-glast-pipeline-web |
| tony/brian |
|
org-srs-pipeline-sp |
| New Package, this was pulled out of org-srs-pipeline-server for easier maintenace. | tony/brian |
|
org-srs-servermapping | org-glast-servermapping |
| max |
|
org-srs-servermonitoring-web | org-glast-servermon-web |
| max |
|
org-srs-shiftschedule-web | org-glast-shiftschedule-web | Is this in production for Fermi? | chee |
|
org-srs-tomcat-deploy-maven-plugin | org-glast-tomcat-deploy-maven-plugin |
| max |
|
org-srs-web-base | org-glast-base-web |
| max |
|
org-srs-resources-web | Contains part of org-glast-resources |
| chee |
|
org-srs-image-handler-web |
|
| max | ImageHandler |
org-srs-portal-web |
|
| max | ROOT |
org-srs-cas | Replaces org-glast-cas-server |
| max | cas-srs |
org-srs-downloadmanager | Replaces org-glast-downloadmanager |
| max | DownloadManager |
Converted Projects
Project Name | Comments | Contact | Application |
---|---|---|---|
org-glast-dataportal-model | Tag library needed by data portal web applications | brian |
|
org-glast-dataportal-portal | Still needed, part of data portal (Fermi specific) | tony | DataPortal |
org-glast-dataportal-astro | Part of astro server. Already done? | brian | DataPortalAstroServer |
org-glast-dataportal-astro-model | This is part of the astro server. Isn't it already converted? | brian |
|
org-glast-dataportal-simpleskimmer | Unnecessary dependence on aidatld(?). Still used, part of data portal | tony | DataPortalSimpleSkimmer |
org-glast-dataportal-history | Still needed, part of data portal (Fermi specific) | tony | DataPortalHistory |
org-glast-dataqualitymonitoring |
| max |
|
org-glast-dataqualitymonitoring-web |
| max | DataQualityMonitoring |
org-glast-eventdisplay | auxiliary project for org-glast-dataportal-wired | dima |
|
org-glast-dataportal-wired | builds and deploys webstart version of wired | dima | DataPortalWired |
org-glast-groupmanager-updater | Need to complete transition to UM tables | chee |
|
org-glast-isoc-common |
| steve |
|
org-glast-maven-project |
| max |
|
org-glast-maven-war-project |
| max |
|
org-glast-maven-jar-project |
| max |
|
org-glast-reports-web | Depends on SNAPSHOT version of jas-plotter on a branch. | max | Reports |
org-glast-runquality |
| karen | RunQuality |
org-glast-telemetry-trending |
| max |
|
org-glast-telemetry-trending-web |
| max | TelemetryTrending |
org-glast-resources | Inherits from org-srs-resources-web and has | chee | Resources |
org-glast-isoc-logging |
| steve,jim | ISOCLogging |
org-glast-dataprocessing-web |
| max | DataProcessing |
org-glast-systemtests-web |
| max | SystemTests |
org-glast-telemetry-apidstats |
| jim | APIDStats |
org-glast-latba-web |
| dan k | LATBA |
org-glast-fcwebview |
| jim | FCWebView |
org-glast-isoc-cfgwebbrowser |
| jim | WebConfigBrowser |
org-glast-isoc-mpwebview |
| jim | MPWebView |
org-glast-telemetry-rtdisplay-web |
| jim | TelemetryTableWebUI |
org-glast-telemetry-monitor-web |
| jim | TelemetryMonitor |
org-glast-historyprocessing |
| karen | HistoryProcessing |
org-glast-speakersbureau-web |
| karen | SpBureau |
org-glast-releasemanager | Contains both new rm2 and old releasemanager application | karen | rm2 |
org-glast-latcatalog-web |
| roberto | LatSourceCatalog |
org-glast-aspdataviewer-web |
| roberto | ASPDataViewer |
org-glast-elog-base | Base library for OpsLog | tony |
|
org-glast-elog-web | Ops Log web application | tony | elog,Entries |
org-glast-countdown-clock | Generates this page... http://glast-ground.slac.stanford.edu/CountdownClock/ | tony | CountdownClock |
org-glast-glossary | Produces this: http://glast-ground.slac.stanford.edu/glossary/ | max | glossary |
org-glast-installer-gui |
| tony | SConsInstaller |
Projects to convert
Module Name | Comments | Contact | Application |
---|---|---|---|
org-glast-cas-server | Backend of login server. Still needed unless we are switching to crowd | max | cas |
Not to be converted
Module Name | Comments | Contact | Application |
---|---|---|---|
tomcat | Doesnt need to be converted | tony |
|
TomcatConfigurationBuilder | Netbeans project | tony |
|
oracle | Doesnt need converting | tony |
|
org-glast-monitor | Standalong monitoring (http://glastlnx20.slac.stanford.edu:5080). Can be left where it is | tony |
|
Obsolete Projects
We might consider either moving them from cvs or disabling them
Module Name | Comments | Contact | Application |
---|---|---|---|
org-glast-downloadmanager |
|
|
|
org-silicondetecor-web | Not Needed Anymore | karen | SiliconDetectorWeb |
org-glast-dataflow-web |
|
|
|
org-glast-util-grep |
|
|
|
org-glast-calibrationtrending-web |
|
| CalibrationTrending |
org-glast-calibrationtrending |
|
|
|
org-glast-logging |
|
|
|
org-glast-clock | Produces the clock applet on https://glast-ground.slac.stanford.edu/LatOps/. I think we should declare the whole of LatOps obsolete. | tony |
|
org-glast-groupmanager-example |
|
|
|
org-glast-confluence | Obsolete (replaced by crowd). Still contains some potentially useful code so should not be lost forever. |
|
|
org-glast-dataserver-web |
|
|
|
org-glast-dataserver-portal |
|
|
|
org-glast-dataportal-xroot-gateway | Obsolete (folded into data catalog) |
|
|
org-glast-skimmer-web |
|
|
|
org-glast-dataportal-skimmer-fits | Obsolete (although still running, should be removed from data portal) |
|
|
org-glast-asp-skimmer |
| roberto |
|
org-glast-visitor-web |
|
|
|
org-glast-maven-jar-archetype |
|
|
|
org-glast-maven-war-archetype |
|
|
|
org-glast-maven-aida-project | Replaced by org-srs-maven-aida-project |
|
|
org-glast-base-web | Replaced by org-srs-web-base |
|
|
org-glast-tomcat-deploy-maven-plugin | Replaced by org-srs-tomcat-deploy-maven-plugin |
|
|
org-glast-shiftschedule-web | Replaced by org-srs-shiftschedule-web | ShiftSchedule |
|
org-glast-servermon-web | Replaced by org-srs-servermonitoring-web | ServerMonitoring |
|
org-glast-servermapping | Replaced by org-srs-servermapping | ServerMapping |
|
org-glast-pipeline-web | Replaced by org-srs-pipeline-web | Pipeline-II |
|
org-glast-pipeline-server | Replaced by org-srs-pipeline-server |
|
|
org-glast-pipeline-client | Replaced by org-glast-pipeline-client |
|
|
org-glast-jobcontrol | Replaced by org-srs-jobcontrol |
|
|
org-glast-datahandling-common | Replaced by org-srs-datahandling-common |
|
|
org-glast-datacatalog-web | Replaced by org-srs-datacatalog-web |
|
|
org-glast-datacat-sp | Replaced by org-srs-datacat-sp |
|
|
org-glast-datacat-server | Replaced by org-srs-datacat-server |
|
|
org-glast-datacat-client | Replaced by org-srs-datacat-client |
|
|
org-glast-commons-web | Replaced by org-srs-commons-web |
|
|
org-glast-base-application | Use now org-srs-base-application or org-srs-base-application-gui |
|
|
org-glast-tld-timeline | Used to be standalone application but now it is in MPWebView | jim, steve |
|
org-glast-cas-client-example | first Matt's example using ageci | tony |
|
org-glast-fcmonitor |
| bryson |
|
org-glast-fcwebview-portlet |
| max |
|
org-glast-portlet |
| max |
|
org-glast-portlet-base |
| max |
|
org.glast.portlet |
| max |
|
org-glast-portlets |
| max |
|
org-glast-skeleton-portlet |
| max |
|
org-glast-portal-theme |
| max |
|
org-glast-grbmonitoring-web |
| roberto |
|
org-glast-asdc-sourceviewer |
| roberto |
|
org-glast-asp-sourceviewer |
| roberto |
|
datacatalog-web |
| tony |
|
org-glast-datamonitoring |
| max |
|
org-glast-web-base-application |
| max |
|
org-glast-datamonitoring-web |
| max |
|
org-glast-trendable-db |
| max |
|
org-glast-pipeline-log |
| tony |
|
org-glast-pipeline-xml |
| tony |
|
org-glast-pipeline-core |
| tony |
|
org-glast-batch |
| tony |
|
org-glast-telemetry-trends |
| max |
|
org-glast-sourcemonitoring |
| max |
|
org-glast-sourcemonitoring-web |
| max |
|
org-glast-maven-web-project |
| max |
|
org-glast-fastmonitoring |
| max |
|
org-glast-fastmonitoring-web |
| max |
|
org-glast-maven-plugin-parent |
| matt |
|
org-glast-maven-xmlbeans-plugin |
| matt |
|
org-glast |
| matt |
|
org.glast.test |
| matt |
|
org-glast-hello |
| matt |
|
org-glast-profile |
| matt |
|
org-glast-common |
| matt |
|
org-glast-runquality-web |
| karen |
|
org-glast-historyprocessing-web |
| karen |
|
org-glast-mc-requests |
| karen |
|
SCM Plugin
CVS repositories cannot be inherited by the parent pom, so each project will have to add the following lines to their pom file:
...
<scm>
<connection>scm:cvs:pserver:anoncvs@glast-java.slac.stanford.edu:/cvs/java:${artifactId}</connection>
<developerConnection>scm:cvs:ext:@glast-java.slac.stanford.edu:/cvs/java:${artifactId}</developerConnection>
<url>http://www-glast.stanford.edu/cgi-bin/viewcvs/${artifactId}/?root=java</url>
</scm>
Tomcat manager authentification
To be able to deploy to a tomcat server it is necessary to provide the manager's username and password. This can be done in a file called settings.xml located in your HOME\.m2 directory.
For GLAST you have to add the glastServer server element as shown below:
...
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<servers>
<server>
<id>glastServer</id>
<username>glast</username>
<password>GammaRay</password>
</server>
</servers>
</settings>
Automatic version
To have the version number picked up automatically from the pom file add the following lines to web.xml
...
<context-param>
<param-name>
version
</param-name>
<param-value>
${pom.version}
</param-value>
</context-param>
and the following to the jsp:
...
Version: ${initParam.version}
List of Modules in javacvs
Current Projects
Module Name | Converted | In Hudson | Comments | Contact |
---|---|---|---|---|
org-glast-maven-project |
| |
| max |
org-glast-maven-jar-project |
| |
| max |
org-glast-maven-jar-archetype |
| |
| max |
org-glast-maven-war-project |
|
|
| max |
org-glast-maven-war-archetype |
|
|
| max |
org-glast-maven-aida-project |
|
|
| max |
org-glast-tomcat-deploy-maven-plugin |
|
|
| max |
org-glast-base-web |
|
|
| max |
org-glast-base-application |
|
|
| max |
org-glast-servermapping |
|
|
| max |
org-glast-groupmanager |
| | Unnecessary dependence on aidatld. Still on branch | tony |
org-glast-dataportal-astro-model |
| |
| tony |
org-glast-datahandling-common |
|
|
| tony |
org-glast-telemetry-trending |
|
|
| max |
org-glast-telemetry-trending-web |
|
|
| max |
org-glast-installer-gui |
|
|
| tony |
org-glast-releasemanager |
|
|
| tony |
TomcatConfigurationBuilder |
|
|
| tony |
org-glast-dataportal-astro |
|
|
| tony |
org-glast-reports-web |
|
|
| max |
org-glast-resources |
|
|
| charlotte |
oracle |
|
|
| tony |
org-glast-dataportal-history |
|
|
| tony |
org-glast-runquality |
|
|
| karen |
org-glast-historyprocessing |
|
|
| karen |
org-glast-latba-web |
|
|
| dan k |
org-glast-dataportal-model |
|
| Version 1.8 but depends on SNAPSHOTs | tony |
org-glast-dataportal-portal |
|
|
| tony |
org-glast-jobcontrol |
|
| Version 1.8 | tony |
org-glast-servermon-web |
|
|
| max |
org-glast-asp-skimmer |
|
|
| tony |
org-glast-dataportal-simpleskimmer |
|
| Unnecessary dependence on aidatld | tony |
org-glast-latcatalog-web |
|
|
| roberto |
org-glast-shiftschedule-web |
|
|
| charlotte |
org-glast-dataportal-skimmer-fits |
|
|
| tony |
org-glast-aspdataviewer-web |
|
|
| roberto |
org-glast-dataportal-wired |
|
|
| tony |
org-glast-skimmer-web |
|
|
| tony |
org-glast-dataportal-xroot-gateway |
|
|
| tony |
org-glast-dataprocessing-web |
|
|
| max |
org-glast-dataqualitymonitoring |
|
|
| max |
org-glast-dataqualitymonitoring-web |
|
|
| max |
org-glast-systemtests-web |
|
|
| max |
org-glast-dataserver-portal |
|
|
| tony |
org-glast-cas-client-example |
|
|
| tony |
org-glast-dataserver-web |
|
|
| tony |
org-glast-cas-server |
|
|
| tony |
org-glast-downloadmanager |
|
|
| tony |
org-glast-pipeline-client |
|
|
| tony |
org-glast-commons-web |
|
|
| max |
org-glast-confluence |
|
|
| tony |
org-glast-countdown-clock |
|
|
| tony |
org-glast-pipeline-server |
|
|
| dan |
org-glast-datacat-client |
|
| Version is 2.3.2 but depends on SNAPSHOTs. Test do not work | dan |
org-glast-pipeline-web |
|
|
| tony |
org-glast-datacat-sp |
|
| Version is 2.2.1, but depends on SNAPSHOTs | dan |
org-glast-datacatalog-web |
|
|
| tony |
org-silicondetecor-web |
|
|
| karen |
org-glast-groupmanager-example |
|
|
| tony |
tomcat |
|
|
| tony |
org-glast-datacat-server |
|
| crawler | tony |
org-glast-isoc-cfgwebbrowser |
|
|
| jim |
org-glast-fcwebview |
|
|
| jim |
org-glast-isoc-mpwebview |
|
|
| jim |
org-glast-telemetry-apidstats |
|
|
| jim, steve |
org-glast-telemetry-monitor-web |
|
|
| jim, steve |
org-glast-telemetry-rtdisplay-web |
|
|
| jim, steve |
org-glast-tld-timeline |
|
|
| jim, steve |
Unknown Projects
These should be either upgraded to current projects or demoted to obsolete.
Module Name | Converted | In Hudson | Comments | Contact |
---|---|---|---|---|
org-glast-fcmonitor |
|
| Obsolete? | bryson |
org-glast-isoc-common |
|
|
| steve |
org-glast-logging |
|
| Is this a duplicate of org-glast-isoc-logging? | steve |
org-glast-isoc-logging |
|
|
| steve, jim, max |
org-glast-calibrationtrending |
|
| Obsolete | max |
org-glast-calibrationtrending-web |
|
| Obsolete | max |
org-glast-mc-requests |
|
|
|
|
org-glast-clock |
|
|
|
|
org-glast-util-grep |
|
|
| tony |
org-glast-visitor-web |
|
|
| tony |
org-glast-dataflow-web |
|
|
|
|
org-glast-glossary |
|
|
|
|
org-glast-elog-base |
|
|
|
|
org-glast-monitor |
|
|
|
|
org-glast-elog-web |
|
|
|
|
Obsolete Projects
They will be moved to a different directory (obsolete) in the cvs repository.
Module Name | Converted | In Hudson | Comments | Contact |
---|---|---|---|---|
org-glast-fcwebview-portlet |
|
| Obsolete | max |
org-glast-portlet |
|
| Obsolete | max |
org-glast-portlet-base |
|
| Obsolete | max |
org.glast.portlet |
|
| Obsolete | max |
org-glast-portlets |
|
| Obsolete | max |
org-glast-skeleton-portlet |
|
| Obsolete | max |
org-glast-portal-theme |
|
| Obsolete | max |
org-glast-grbmonitoring-web |
|
| Obsolete | roberto |
org-glast-asdc-sourceviewer |
|
| Obsolete | roberto |
org-glast-asp-sourceviewer |
|
| Obsolete | roberto |
datacatalog-web |
|
| Obsolete | tony |
org-glast-datamonitoring |
|
| Obsolete | max |
org-glast-web-base-application |
|
| Obsolete | max |
org-glast-datamonitoring-web |
|
| Obsolete | max |
org-glast-trendable-db |
|
| Obsolete | max |
org-glast-pipeline-log |
|
| Obsolete | tony |
org-glast-pipeline-xml |
|
| Obsolete | tony |
org-glast-pipeline-core |
|
| Obsolete | tony |
org-glast-batch |
|
| Obsolete | tony |
org-glast-telemetry-trends |
|
| Obsolete | max |
org-glast-sourcemonitoring |
|
| Obsolete | max |
org-glast-sourcemonitoring-web |
|
| Obsolete | max |
org-glast-maven-web-project |
|
| Obsolete | max |
org-glast-fastmonitoring |
|
| Obsolete | max |
org-glast-fastmonitoring-web |
|
| Obsolete | max |
org-glast-maven-plugin-parent |
|
| Obsolete | matt |
org-glast-maven-xmlbeans-plugin |
|
| Obsolete | matt |
org-glast |
|
| Obsolete | matt |
org.glast.test |
|
| Obsolete | matt |
org-glast-hello |
|
| Obsolete | matt |
org-glast-profile |
|
| Obsolete | matt |
org-glast-common |
|
| Obsolete | matt |
org-glast-runquality-web |
|
| Obsolete | karen |
org-glast-historyprocessing-web |
|
| Obsolete | karen |