mvn
- http://maven.apache.org/guides/getting-started/index.html
- http://www.infoq.com/cn/news/2011/05/xxb-maven-8-plugin
- http://mojo.codehaus.org/versions-maven-plugin/
建立偶过个模块的mvn项目
使用下面的命令创建子项目
mkdir calc cd calc mvn archetype:generate -DgroupId=com.stcalc -DartifactId=common -DinteractiveMode=false mvn archetype:generate -DgroupId=com.stcalc -DartifactId=business-rule -DinteractiveMode=false mvn archetype:generate -DgroupId=com.stcalc -DartifactId=sheduler -DinteractiveMode=false mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=com.github.bisone -DartifactId=ui-webapp -DinteractiveMode=false
在 calc目录下创建pom.xml文件
使用 <modules> 标签定义子项目
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<properties>
<full.version>1.0.0</full.version>
</properties>
<groupId>com.stcalc </groupId>
<artifactId>calc</artifactId>
<version>${full.version}</version>
<packaging>pom</packaging>
<modules>
<module>common</module>
<module>business-rule</module>
<module>sheduler</module>
<module>web</module>
</modules>
</project>
修改子项目pom.xml定义parent
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.stcalc</groupId>
<artifactId>calc</artifactId>
<version>${full.version}</version>
</parent>
<groupId>com.stcalc</groupId>
<artifactId>common</artifactId>
<packaging>jar</packaging>
<version>${full.version}</version>
<name>common</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Jetty plugin
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.9.v20130131</version>
<configuration>
<contextXml>${basedir}/src/main/webapp/WEB-INF/jetty-context.xml</contextXml>
<stopKey>CTRL+C</stopKey>
<stopPort>8999</stopPort>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webAppConfig>
<contextPath>/</contextPath>
</webAppConfig>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>9090</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
</configuration>
</plugin>
jetty-context.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
"http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.webapp.WebInfIncludeJarPattern</Arg>
<Arg>.*/.*jsp-api-[^/]\.jar$|./.*jsp-[^/]\.jar$|./.*taglibs[^/]*\.jar$</Arg>
</Call>
</Configure>
mvn dependency:tree
settings
cat ~/.m2/settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"
xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Example for MySQL-->
<sonar.__my_company_1__bc.url>
__my_company_1__bc:h2:tcp://localhost:9092/sonar
</sonar.__my_company_1__bc.url>
<sonar.__my_company_1__bc.username>sonar</sonar.__my_company_1__bc.username>
<sonar.__my_company_1__bc.password>sonar</sonar.__my_company_1__bc.password>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
http://localhost:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
<proxies>
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<host>127.0.0.1</host>
<port>8087</port>
<nonProxyHosts></nonProxyHosts>
</proxy>
</proxies>
</settings>
下载源代码
mvn dependency:sources mvn dependency:resolve -Dclassifier=javadoc
测试
Run Unit Test See below examples to run unit test with Maven.
Example 1 To run the entire unit test (TestApp1 and TestApp2), issue this command :
mvn test
Example 2 To run single test (TestApp1), issue this command :
mvn -Dtest=TestApp1 test