编写主代码

1 在绝大多数情况下,应该把项目主代码放到src/main/java 目录下(遵循maven的约定),而无需额外的配置。maven会自动搜寻该目录找到项目的主代码,其次主代码的包名应该基于groupId和artifactId,这样更加清晰和符合逻辑方便搜索构件或者java类。

2我们执行maven clean install 命令  

clean 告诉maven清除输出目录target/,compile 告诉maven编译项目主代码

我们运行命令发现首先执行clean:clean任务删除target/目录。默认情况下,maven构建的所有输出都在target目录下;接着执行resources:resources任务

最后执行compiler:compile将项目主代码编译至target/classes目录下面。

编写测试代码:

1在maven项目中默认的测试代码目录是:src/test/java因此在编写测试用例之前首先创建该目录。

2我们执行mvn clean test命令

maven实际执行的任务为:

clean:clean  resources:resources compiler:compile  resources:testResources compiler:testCompile  surefire:test  它会先自动执行

项目主资源处理,主代码编译,测试资源处理,测试代码编译,运行测试用例并且输出测试报告工作,这是maven的生命周期的一个特性。

注意:

我们如果在代码中引用了注解,需要配置compiler插件,compiler插件默认只支持编译Java 1.3因此需要配置该插件支持1.5

具体配置如下:

<build> 
            <finalName>myth</finalName> 
           <plugins> 
                  <!-- maven compiler plugin --> 
               <plugin> 
                   <groupId>org.apache.maven.plugins</groupId>               <!-- maven compiler plugin --> 
                   <artifactId>maven-compiler-plugin</artifactId> 
                   <configuration> 
                       <source>1.6</source> 
                       <target>1.6</target> 
 
 
 

                       <encoding>utf-8</encoding> 
                   </configuration> 
                 </plugin> 
 
         </plugins> 
 
     </build>

打包和执行:

mvn clean package 打包

首先它会执行编译和测试,然后调用jar插件的jar目标奖项目打成一个jar文件。他是根据artifact-version.jar规则来进行命名的。如果pom中没有指定默认为jar。

mvn clean install 

如果我们要让其他maven项目直接引用到jar包我们需要执行mvn clean install ,它负责将构件安装至本地仓库,它也会首先执行编译,测试和打包。

默认打包生成的jar是不能够直接运行的。因为带有main方法的类信息不会添加至manifest中(打开jar文件中的 META-INF/MANIFEST.MF无法看到Main-Class行为,我们可以使用maven-shade-plugin生成可执行的jar文件

我们需要配置maven-shade-plugin插件

1. <plugin>     
2.     <groupId>org.apache.maven.plugins</groupId>     
3.     <artifactId>maven-shade-plugin</artifactId>     
4.     <version>1.2.1</version>     
5.     <executions>     
6.         <execution>     
7.             <phase>package</phase>     
8.             <goals>     
9.                 <goal>shade</goal>     
10.             </goals>     
11.             <configuration>     
12.                 <transformers>     
13.                     <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">         
14.                          <mainClass>com.taobao.wireless.test.tools.wf.WirelessDemandReport</mainClass>     
15.                     </transformer>     
16.                 </transformers>     
17.             </configuration>     
18.         </execution>     
19.       </executions>     
20. </plugin>

我们可以调用java -jar target \hello-world-1.0-SNAPSHOT.jar来运行可执行jar.

使用Archetype生成项目骨架

mvn archetype:generate -DgroupId=com.alifi.training.helloworld -DartifactId=training.helloworld.web.webx -Dversion=1.0.0-SNAPSHOT -Dpackage=training.helloworld.web.webx -DarchetypeArtifactId=archetype-webx3-quickstart   -DarchetypeGroupId=com.alibaba.platform.shared  -DarchetypeCatalog=http://repo.alibaba-inc.com/mvn/ -DinteractiveMode=false

mvn archetype:generate    选择archetype ,创建项目骨架。