编写主代码
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 ,创建项目骨架。