Running Maven
http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
http://maven.apache.org/guides/getting-started/index.html
Generally the local repository is provided in USER_HOME/.m2/repository.
Configuration
http://maven.apache.org/guides/mini/guide-configuring-maven.html
Three levels:
- Project - most static configuration occurs in pom.xml.
There should be a project configuration for every project. The configuration in pom.xml overrides the same configuration in other two levels. A user does not need to specify every aspect of the configuration. Those unspecified aspects are inherited from Maven's default Super POM.
Introduction to POM: http://maven.apache.org/guides/introduction/introduction-to-the-pom.html.
POM reference: http://maven.apache.org/pom.html - Installation - this is configuration added once for a Maven installation
This configuration file is generally located in M2_HOME/conf/settings.xml.
NOTE: This location can be overridden with the system property:
-Dorg.apache.maven.global-settings=/path/to/global/settings.xml
Guide: http://maven.apache.org/guides/mini/guide-configuring-maven.html
Reference: http://maven.apache.org/ref/2.0.8/maven-settings/settings.html
Detailed reference: http://maven.apache.org/settings.html - User - this is configuration specific to a particular user
This configuration file is generally located in USER_HOME/.m2/settings.xml.
NOTE: This location can be overridden with the system property:
-Dorg.apache.maven.user-settings=/path/to/user/settings.xml
Build your own private/internal repository:
This article introduces how to create a repository using Artifactory: http://www.theserverside.com/tt/articles/article.tss?l=SettingUpMavenRepository. In addition, the author also compares some mainstream maven remote repository managers including Standard maven proxy, Dead simple Maven Proxy, Proximity and Artifactory.
In my case, I also use Artifactory and deploy it to tomcat. It has a nice web-based interface. Artifactory uses database(derby I think) to store various repository data so a user can not know the repository content by directly looking at the directory.
Deploy your artifacts to remote repository by using maven-deploy plugin:
http://maven.apache.org/plugins/maven-deploy-plugin/usage.html
(1) If the artifacts are built by using Maven, you should use deploy:deploy Mojo.
In your pom.xml, element <distributionManagement/> should be inserted to tell Maven how to deploy current package. If your repository is secured, you may also want to configure your settings.xml file to define corresponding <server/> entries which provides authentication information.
Command: mvn deploy.
(2) If the artifacts are NOT built by using Maven, you should use deploy:deploy-file Mojo.
Sample command:
mvn deploy:deploy-file -Dpackaging=jar -Durl=file:/grids/c2/www/htdocs/maven2
-Dfile=./junit.jar -DgroupId=gridshib -DartifactId=junit -Dversion=GTLAB
FAQ:
(1) What does maven standard directory layout look like?
http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
(1) How to specify parent artifact in pom.xml?
Read http://maven.apache.org/guides/introduction/introduction-to-the-pom.html.
(2) If a dependent package can not be download from central Maven repository, three methods can be used to deal with it:
"(2) How to add new repository?"
- Install the dependency locally using the install plugin. The method is the simplest recommended method. For example:
mvn install:install-file -Dfile=non-maven-proj.jar -DgroupId=some.group -DartifactId=non-maven-proj -Dversion=1Notice that an address is still required, only this time you use the command line and the install plugin will create a POM for you with the given address.
- Create your own repository and deploy it there. This is a favorite method for companies with an intranet and need to be able to keep everyone in synch. There is a Maven goal called deploy:deploy-file which is similar to the install:install-file goal (read the plugin's goal page for more information).
- Set the dependency scope to system and define a systemPath. This is not recommended, however, but leads us to explaining the following elements:
Put following code snippet into pom.xml or settings.xml.
<repository> <id>your-new-repository-id</id> <name>New Maven Repository </name> <layout>default</layout> <url>Address of the new repository</url> <snapshots> <enabled>enable-it?</enabled> </snapshots> <releases> <enabled>enable-it?</enabled> </releases> </repository>(3) How to disable default central maven repository?
Put following snippet into your pom.xml.
<repository> <id>central</id> <name>Maven Repository Switchboard</name> <layout>default</layout> <url>http://repo1.maven.org/maven2</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>false</enabled> </releases> </repository>(4) How can I package source code without run test?
Feed parameter
-Dmaven.test.skip=true
into the command line. Note this property is defined by maven plugin surefire.
(5) Why does "mvn clean" delete my source code?
In your pom.xml, if content of element <directory> nested in element <build> is "./", "mvn clean" will delete all content in current directory including the src directory.
There are two more elements which can be used to specify locations of compiled classes.
outputDirectory: The directory where compiled application classes are placed.
testOutputDirectory: The directory where compiled test classes are placed.
(6) How to add resources into built package?
http://maven.apache.org/guides/getting-started/index.html#How_do_I_add_resources_to_my_JAR.
http://maven.apache.org/guides/getting-started/index.html#How_do_I_filter_resource_files
No comments:
Post a Comment