==================================== Lucene/Solr Maven build instructions ==================================== Contents: A. How to use nightly Jenkins-built Lucene/Solr Maven artifacts B. How to generate Lucene Maven artifacts C. How to generate Solr Maven artifacts D. How to use Maven to build Lucene/Solr ----- A. How to use nightly Jenkins-built Lucene/Solr Maven artifacts The most recently produced nightly Jenkins-built Lucene and Solr Maven artifacts are available in Maven repository layout here: An example POM snippet: ... ... lucene-solr-jenkins-branch_3x Lucene/Solr Jenkins branch_3x https://builds.apache.org/job/Lucene-Solr-Maven-3.x/lastSuccessfulBuild/artifact/maven_artifacts default true B. How to generate Lucene Maven artifacts 1. Prerequisites: JDK 1.5+ and Ant 1.7.X 2. Run the following command from the lucene/ directory: ant generate-maven-artifacts The above command will create an internal Maven repository under lucene/dist/maven/, including POMs, binary .jars, source .jars, and javadoc .jars, for Lucene Core, for the Lucene test framework, and for each contrib. C. How to generate Solr Maven artifacts 1. Prerequisites: JDK 1.5+ and Ant 1.7.X 2. Run the following from the solr/ directory: ant generate-maven-artifacts The above command will create an internal Maven repository under solr/package/maven/, including POMs, binary .jars, source .jars, and javadoc .jars, for Solr Core, for the Solr test framework, for each contrib, and for the Solr .war (for which there are no source or javadoc .jars). D. How to use Maven to build Lucene/Solr In summary, to enable Maven builds, perform the following: svn update ant get-maven-poms mvn -N -Pbootstrap install The details, followed by some example Maven commands: 1. Prerequisites: JDK 1.5+; Maven 2.2.1 or 3.0.X 2. Make sure your sources are up to date. If you checked your sources out from the Apache Subversion repository, run "svn update" from the top level. 3. Copy the Maven POM templates from under dev-tools/maven/ to where they they need to go in order to drive the Maven build, using the following command from the top-level directory: ant get-maven-poms Note that you will need to do this whenever changes to the POM templates are committed. It's a good idea to follow every "svn update" with "ant get-maven-poms" for this reason. The above command copies all of the POM templates from dev-tools/maven/, filling in the project version with the default "X.X-SNAPSHOT". If you want the POMs and the Maven-built artifacts to have a version other than the default, you can supply an alternate version on the command line with the above command, e.g.: ant -Dversion=4.0-my-special-version get-maven-poms 4. Populate your local repository with .jars & POMs for dependencies that are not available from public Maven repositories (a.k.a. "non-mavenized dependencies"): mvn -N -Pbootstrap install Note that you will need to do this whenever changes to the non-Mavenized dependencies are committed. It's a good idea to follow every "svn update" with "ant get-maven-poms" and "mvn -N -Pbootstrap install" for this reason. Some example Maven commands you can use after you perform the above preparatory steps: - Compile, package, and install all binary artifacts to your local repository: mvn install After compiling and packaging, but before installing each module's artifact, the above command will also run all the module's tests. - Compile, package, and install all binary artifacts to your local repository, without running any tests: mvn -DskipTests install - Compile, package, and install all binary and source artifacts to your local repository, without running any tests: mvn -DskipTests source:jar-no-fork install - Run all tests: mvn test - Run all test methods defined in a test class: mvn -Dtest=TestClassName test