maven 多模块项目及maven插件
1、创建多模块maven工程
1、创建maven project
2、修改为pom
3、删除src下所有文件
4、右击该工程添加maven model项目即可
2、父工程pom配置
非公共
<dependencyManagement> <dependencies> <dependency> <groupId>com.trunkbow</groupId> <artifactId>comm-sign</artifactId> <version>${comm-sign.version}</version> </dependency> </dependencies> </dependencyManagement>
公共
<dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> </dependencies>
本地jar包依赖注意不会被打包进去
<dependency> <groupId>cn.guoyukun.jdbc</groupId> <artifactId>db2jcc</artifactId> <version>8.2</version> <scope>system</scope> <systemPath>${project.basedir}/lib/db2jcc-8.2.jar</systemPath> </dependency>
exclusions 排除jar包
<dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-tools</artifactId> <version>${velocity-tools.version}</version> <exclusions> <exclusion> <groupId>org.apache.struts</groupId> <artifactId>struts-tiles</artifactId> </exclusion> </exclusions> </dependency>
3、生成帮助文档
<build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${java.version}</source> <target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
4、测试插件指定编码及是否忽略test
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
<forkMode>once</forkMode>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>
5、生成可运行jar包插件
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>assemble</goal> </goals> </execution> </executions> <configuration> <configurationSourceDirectory>src/main/resources</configurationSourceDirectory> <copyConfigurationDirectory>true</copyConfigurationDirectory> <assembleDirectory>${project.build.directory}/appassembler/${project.artifactId}</assembleDirectory> <programs> <program> <mainClass>com.trunkbow.makefile.main.Server</mainClass> </program> </programs> </configuration> </plugin>
6、生成目标文件
xx.jar
xx-javadoc.jar
xx-source.jar
xx-test.jar
<java.version>1.6</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<build> <finalName>${project.artifactId}</finalName> xx.jar <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${java.version}</source> <target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> xx-source.jar <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> xx-javadoc.jar <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> xx-test.jar <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
7、集成tomcat,使用maven build中
<tomcat7Version>7.0.67</tomcat7Version> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <dependencies> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jasper-el</artifactId> <version>${tomcat7Version}</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-el-api</artifactId> <version>${tomcat7Version}</version> </dependency> </dependencies> <configuration> <uriEncoding>utf-8</uriEncoding> </configuration> </plugin>
或
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>9090</port> <path>/mg</path> <uriEncoding>UTF-8</uriEncoding> <finalName>mgr</finalName> <server>tomcat7</server> </configuration> </plugin>
tomcat7:run 或者tomcat6:run可以将maven的web应用在tomcat6/7里面运行 ,eclipse Indigo 版本默认tomcat:run是用tomcat6
tomcat7:run
tomcat6
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat6-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8883</port>
<uriEncoding>UTF-8</uriEncoding>
<path>/</path>
</configuration>
</plugin>
8、集成jetty
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.13.v20130916</version> <configuration> <scanIntervalSecond>10</scanIntervalSecond> <webApp> <contextPath>/test</contextPath> </webApp> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>8787</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> </configuration> </plugin>
其中scanIntervalSecond表示扫描项目变更的时间间隔,默认为0,表示不扫描。
ContextPath表示项目的访问路径,比如此:http://localhost:8787/test/
port表示绑定的端口号,默认监听的端口是8080
9、在应用程序用使用多个存储库
<repositories> <repository> <id>Ibiblio</id> <name>Ibiblio</name> <url>http://www.ibiblio.org/maven/</url> </repository> <repository> <id>PlanetMirror</id> <name>Planet Mirror</name> <url>http://public.planetmirror.com/pub/maven/</url> </repository> </repositories>
10、将应用的依赖jar包打包到一个可执行的jar中
<plugin>
<artifactId> maven-assembly-plugin </artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.cetc.di.App</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>