一、Maven的一些含义:
groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。
譬如你在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp,
如果你的公司是mycom,有一个项目为myapp,那么groupId就应该是com.mycom.myapp
artifactId定义了当前Maven项目在组中唯一的ID
version指定了Hello World项目当前的版本——1.0-SNAPSHOT。
SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本
二、使用maven命令编译、测试、打包、运行
Maven最主要的命令:mvn clean compile、mvn clean test、mvn clean package、mvn clean install。
执行test之前是会先执行compile的,执行package之前是会先执行test的,而类似地,install之前会执行package。
生成清除Eclipse项目结构:
mvn eclipse:eclipse
mvn eclipse:clean
清理(删除target目录下编译内容):
mvn clean
仅打包Web页面文件:
mvn war:exploded
打包时跳过测试:
mvn package -Dmaven.test.skip=ture
跳过测试运行maven任务:
mvn -Dmaven.test.skip=true XXX
!!!几个编译的例子:
--编译 hadoop
mvn clean package -Pdist,native -DskipTests -Dtar
--编译spark
mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -DskipTests clean package
PS:
另外用其他的方式去编译spark
./dev/make-distribution.sh \
--name 2.6.0-cdh5.7.0 \
--tgz \
-Phadoop-2.6 \
-Dhadoop.version=2.6.0-cdh5.7.0 \
-Phive -Phive-thriftserver -Pyarn
--编译hive
mvn clean package -DskipTests -Phadoop-2 -Pdist
-P,--activate-profiles <arg> Comma-delimited list of profiles to activate
主要涉及profiles配置文件,指定使用相应的profiles,也就是说在<profiles>指定的<id>中,可以通过-P进行传递或者赋值。
例:
如果你的pom.xml如下:
<profiles>
<profile>
<id>test</id>
...
</profile>
</profiles>
执行mvn test -Ptest为触发配置文件。
或者
<profile>
<id>test</id>
<activation>
<property>
<name>env</name>
<value>test</value>
</property>
</activation>
...
</profile>
-D,--define <arg> Define a system property
主要涉及propertites属性,将参数传入到对应的properties里面
要发送多个变量,请使用多个空格分隔符加-D:
例子:mvn -DpropA=valueA -DpropB=valueB -DpropC=valueC clean package
如果你的pom.xml如下:
<properties>
<theme>myDefaultTheme</theme>
</properties>
那么在这个执行过程中mvn -Dtheme=halloween clean package会覆盖theme的值,具有如下效果:
<properties>
<theme>halloween</theme>
</properties>
参考文档:
http://blog.csdn.net/wangjunjun2008/article/details/18982089
http://blog.csdn.net/yy193728/article/details/72847122
groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。
譬如你在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp,
如果你的公司是mycom,有一个项目为myapp,那么groupId就应该是com.mycom.myapp
artifactId定义了当前Maven项目在组中唯一的ID
version指定了Hello World项目当前的版本——1.0-SNAPSHOT。
SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本
二、使用maven命令编译、测试、打包、运行
Maven最主要的命令:mvn clean compile、mvn clean test、mvn clean package、mvn clean install。
执行test之前是会先执行compile的,执行package之前是会先执行test的,而类似地,install之前会执行package。
生成清除Eclipse项目结构:
mvn eclipse:eclipse
mvn eclipse:clean
清理(删除target目录下编译内容):
mvn clean
仅打包Web页面文件:
mvn war:exploded
打包时跳过测试:
mvn package -Dmaven.test.skip=ture
跳过测试运行maven任务:
mvn -Dmaven.test.skip=true XXX
!!!几个编译的例子:
--编译 hadoop
mvn clean package -Pdist,native -DskipTests -Dtar
--编译spark
mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -DskipTests clean package
PS:
另外用其他的方式去编译spark
./dev/make-distribution.sh \
--name 2.6.0-cdh5.7.0 \
--tgz \
-Phadoop-2.6 \
-Dhadoop.version=2.6.0-cdh5.7.0 \
-Phive -Phive-thriftserver -Pyarn
--编译hive
mvn clean package -DskipTests -Phadoop-2 -Pdist
-P,--activate-profiles <arg> Comma-delimited list of profiles to activate
主要涉及profiles配置文件,指定使用相应的profiles,也就是说在<profiles>指定的<id>中,可以通过-P进行传递或者赋值。
例:
如果你的pom.xml如下:
<profiles>
<profile>
<id>test</id>
...
</profile>
</profiles>
执行mvn test -Ptest为触发配置文件。
或者
<profile>
<id>test</id>
<activation>
<property>
<name>env</name>
<value>test</value>
</property>
</activation>
...
</profile>
-D,--define <arg> Define a system property
主要涉及propertites属性,将参数传入到对应的properties里面
要发送多个变量,请使用多个空格分隔符加-D:
例子:mvn -DpropA=valueA -DpropB=valueB -DpropC=valueC clean package
如果你的pom.xml如下:
<properties>
<theme>myDefaultTheme</theme>
</properties>
那么在这个执行过程中mvn -Dtheme=halloween clean package会覆盖theme的值,具有如下效果:
<properties>
<theme>halloween</theme>
</properties>
参考文档:
http://blog.csdn.net/wangjunjun2008/article/details/18982089
http://blog.csdn.net/yy193728/article/details/72847122