= Platform Deployment Build with Maven = If you don't have Maven installed on your machine yet, use [wiki:PLATFORM_INFRASTRUCTURE_OVERVIEW#MavenIntegration][[BR]] == Commands == The syntax for running Maven commands is mvn [profile] [command] [parameters]. They have to be executed in the console in sophie2-platform (in the repository) directory or in the module you want to command (again in its directory). The basic of them are: * validate: validate the project is correct and all necessary information is available * compile: compile the source code of the project * test: test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed * package: take the compiled code and package it in its distributable format, such as a JAR. * integration-test: process and deploy the package if necessary into an environment where integration tests can be run * verify: run any checks to verify the package is valid and meets quality criteria * install: install the package into the local repository, for use as a dependency in other projects locally * deploy: done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects. * clean: cleans up artifacts created by prior builds * site: generates site documentation for this project If you want to skip the tests in the project while building and don't need their results(or the resulted test reports), add '-Dmaven.test.skip=true' in the end of the command you execute. Maven 2 introduces the concept of a build profile. Profiles are specified using a subset of the elements available in the POM itself (plus one extra section), and are triggered in any of a variety of ways. They modify the POM at build time, and are meant to be used in complementary sets to give equivalent-but-different parameters for a set of target environments. We have two profile sections defined in our project and they are: * hudson profile - used for hudson build server (sophie2.org:8080) to generate various reports and their needed maven goals(on this time only the cobertura report is generated using this profile) * jspcompile - used for compiling the jsp, used by Sophie 2 server. The command is 'mvn -Djspcompile [maven-goal]' -Dmaven.test.skip=true. See [wiki:S2S_TESTING_SERVER_R0] for more information. Note: Maybe you will have memory problems executing some of the commands for example mvn site. One of the solutions is to set the MAVEN_OPTS variable to -Xmx1024m -XX:MaxPermSize=386m -Xss16m == Eclipse == You can execute Maven commands over the project in Eclipse right-clicking on the pom.xml file in the parent project or in the module you want to command. Select Run As and choose the desired command. [[BR]] There is 'Maven build...' option where you can add the goals, profiles and parameters you want to execute with 'mvn' command.[[BR]] Note: Do not forget to update Maven dependencies and Update Project Configuration when needed. == Reports == To generate the reports you want you should add the report plug-ins you need into the reporting section at the end of the pom.xml file. For example this code in the base pom.xml installs the maven-javadoc-plugin and generate javadoc reports using the variables in the configuration section while executing 'mvn site' command: {{{ org.apache.maven.plugins maven-javadoc-plugin ${basedir}/src/main/java 1.5 true false }}} See http://docs.codehaus.org/display/MAVENUSER/Reporting+Plugins to get into. The automatic generated reports are: * CPD Report: Duplicate code detection. * Checkstyle: Report on coding style conventions. * !FindBugs Report: Generates a source code report with the !FindBugs Library. * !JavaDocs: !JavaDoc API documentation. * Maven Surefire Report: Report on the test results of the project. * PMD Report: Verification of coding rules. * Source Xref: HTML based, cross-reference version of Java source code. * Dependancies Report: Dependency manipulation (copy, unpack) and analysis. * Mailing Lists Report: Information about our mailing lists. * Project Team report: The developing team. * Project License report: The license of the project. Here is some documentation for these plug-ins: http://shale.apache.org/shale-apps/shale-mailreader/maven-reports.html [[BR]] Use 'mvn site' command to generate the reports added in 'reporting' section in pom.xml file. The generated reports goes in [modulename]/target/site in our repository. = Comments = * When you execute 'mvn assembly:directory' command MAVEN_OPTS have to be set to '-Xmx768m -XX:MaxPermSize=386m -Xss8m' value