Maven简单使用总结
2018-02-15 15:34
211 查看
版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~
http://blog.csdn.net/xiaoduan_/article/details/79328422
main
java
package
test—————————————————-放置测试用例
java
package
resources
pom.xml ———————————————用于管理项目依赖和构建过程
mvn -compile 编译项目
mvn -test 测试
mvn -package 打包
mvn -client 删除target 目录
mvn -install 按照jar包到本地仓库
archetype : generate
-DgroupId=组织名、公司域名的反写+项目名
-DartfactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
很多插件目标的参数都支持从命令行配置,用户可以在Maven命令中直接使用-D参数,并伴随一个参数键=参数值的形式来配置插件目标参数
1. groupId
定义当前Maven项目隶属的实际项目
artifactId
该元素定义实际项目中的一个模块,推荐的做法是使用实际项目名称作为artifactId的前缀。例如nexus-indexer-2.0.0
version
该元素定义Maven项目当前所处的版本
packaging
该元素定义了Maven项目的打包方式。打包方式通常与所生成构建的文件名的扩展名对应。packaging未定义的时候的默认值是jar
classifier
该元素用来帮助定义构建输出的一些附属构构件。附属构件与主构件对应。注意,不能直接定义项目的classifier,因为附属构件不是项目直接默认生成的,而是由附加的构件帮助生成。
上述5个元素中,groupId、artifactId、version是必须定义的,packaging是可选的(默认是jar),classifier是不能直接定义的
以clean生命周期为例,它包含的阶段有pre-clean、clean和post-clean。当用户调用pre-clean的时候只有pre-clean阶段执行,当用户调用clean的时候,pre-clean和clean会得以按照顺序执行,当用户调用post-clean的时候,pre-clean,clean,post-clean会按照顺序执行
较之与生命周期阶段前后的依赖关系,三套生命周期(clean,default,site)本身相互独立,用户可以仅仅调用clean生命周期的某个阶段而不会对其他生命周期有任何影响
1. pre-clean 执行一些清理前需要完成的工作
2. clean 清理上一次构建生成的文件
3. post-clean 执行一些清理后需要完成的工作
validate
initialize
generate-sources
process-source 处理项目主源文件。一般来说是对src/main/resources目录内容进行变量替换等工作,赋值到项目输出的主classpath目录中
generate-source
process-resource
compile 编译项目的主源码。一般来说,是编译src/main/java目录下的JAVA文件到项目输出的主classpath目录中
process-classes
generate-test-sources
process-test-sources 处理项目测试资源文件
generate-test-resource
test-compile 编译项目的测试代码
process-test-classes
test 使用单元测试框架运行测试,测试代码不会被打包或者部署
prepare-package
package 接受编译好的代码,打包成可以发布的格式如 JAR
pre-integration-test
integration-test
verify
install 将包安装到Maven的本地仓库,供本地其他Maven项目使用
deploy将最终的包复制到远程仓库,供其他开发人员和Maven项目使用
pre-site 执行一些在生成项目站点前需要完成的工作
site 生成项目站点文档
post-site 执行一些在生成项目站点之后需要完成的工作
site-deploy 将生成的项目站点发布到服务器上
http://blog.csdn.net/xiaoduan_/article/details/79328422
Maven简单使用总结
学习Hadoop与Spark过程中需要用Maven建立项目,学了一点,这里记录一下。Maven项目典型目录结构
src——————————————————————–源代码main
java
package
test—————————————————-放置测试用例
java
package
resources
pom.xml ———————————————用于管理项目依赖和构建过程
Maven简单命令
mvn -v 查看maven的版本mvn -compile 编译项目
mvn -test 测试
mvn -package 打包
mvn -client 删除target 目录
mvn -install 按照jar包到本地仓库
创建目录的方式(使用archetype自动创建)
archetype : generate 按照提示进行选择archetype : generate
-DgroupId=组织名、公司域名的反写+项目名
-DartfactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
很多插件目标的参数都支持从命令行配置,用户可以在Maven命令中直接使用-D参数,并伴随一个参数键=参数值的形式来配置插件目标参数
Maven坐标概念
为了快速定位一个项目,Maven定义了这样一组规则:世界上任何一个构件都可以使用Maven坐标唯一标识,Maven的坐标元素包括groupId、artifactId、version、packaging、classifier1. groupId
定义当前Maven项目隶属的实际项目
artifactId
该元素定义实际项目中的一个模块,推荐的做法是使用实际项目名称作为artifactId的前缀。例如nexus-indexer-2.0.0
version
该元素定义Maven项目当前所处的版本
packaging
该元素定义了Maven项目的打包方式。打包方式通常与所生成构建的文件名的扩展名对应。packaging未定义的时候的默认值是jar
classifier
该元素用来帮助定义构建输出的一些附属构构件。附属构件与主构件对应。注意,不能直接定义项目的classifier,因为附属构件不是项目直接默认生成的,而是由附加的构件帮助生成。
上述5个元素中,groupId、artifactId、version是必须定义的,packaging是可选的(默认是jar),classifier是不能直接定义的
Maven生命周期
三套生命周期
Maven拥有三套相互独立的生命周期他们分别是clean、default和site。clean是生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期是建立项目站点以clean生命周期为例,它包含的阶段有pre-clean、clean和post-clean。当用户调用pre-clean的时候只有pre-clean阶段执行,当用户调用clean的时候,pre-clean和clean会得以按照顺序执行,当用户调用post-clean的时候,pre-clean,clean,post-clean会按照顺序执行
较之与生命周期阶段前后的依赖关系,三套生命周期(clean,default,site)本身相互独立,用户可以仅仅调用clean生命周期的某个阶段而不会对其他生命周期有任何影响
claen生命周期
clean是生命周期的目的是为了清理项目,它包含了三个阶段1. pre-clean 执行一些清理前需要完成的工作
2. clean 清理上一次构建生成的文件
3. post-clean 执行一些清理后需要完成的工作
default生命周期
default生命周期定义了真正构建时所需要执行的所有步骤,他是所有生命周期中最核心的部分,其包括的阶段如下。validate
initialize
generate-sources
process-source 处理项目主源文件。一般来说是对src/main/resources目录内容进行变量替换等工作,赋值到项目输出的主classpath目录中
generate-source
process-resource
compile 编译项目的主源码。一般来说,是编译src/main/java目录下的JAVA文件到项目输出的主classpath目录中
process-classes
generate-test-sources
process-test-sources 处理项目测试资源文件
generate-test-resource
test-compile 编译项目的测试代码
process-test-classes
test 使用单元测试框架运行测试,测试代码不会被打包或者部署
prepare-package
package 接受编译好的代码,打包成可以发布的格式如 JAR
pre-integration-test
integration-test
verify
install 将包安装到Maven的本地仓库,供本地其他Maven项目使用
deploy将最终的包复制到远程仓库,供其他开发人员和Maven项目使用
site生命周期
site生命周期的目的是建立和发布项目的站点,maven能够给予pom所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息pre-site 执行一些在生成项目站点前需要完成的工作
site 生成项目站点文档
post-site 执行一些在生成项目站点之后需要完成的工作
site-deploy 将生成的项目站点发布到服务器上
命令行与生命周期
从命令行执行Maven任务的最主要方式就是调用Maven的生命周期阶段。需要注意的是各各生命周期之间相互独立,而同一个生命周期内具有前后依赖的关系$mvn claen:该命令调用clean生命周期的clean阶段。实际执行阶段为clean生命周期的pre-clean和clean阶段
$mvn test:该命令执行的是default生命周期的test阶段。实际执行阶段为default生命周期的validate一直到test的所有阶段。这也解释了为什么执行测试的时候项目代码能够自动编译
$mvn clean install:该命令调用clean生命周期的clean阶段和default生命周期的install阶段。实际执行为依次执行各各生周期开头到clean和install阶段的中间所有阶段。该命令结合了两个生命周期。在执行真正项目构建之前清理项目是一个很好的实践。
$mvn clean deploy site-deploy:该命令调用clean生命周期的clean阶段,default生命周期中的deploy阶段以及site生命周期的site-deploy阶段。实际执行规律同上。
pom.xml文件例子
下面是一个添加sparkstreaming依赖的项目例子<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.imooc.spark</groupId> <artifactId>sparktrain</artifactId> <version>1.0</version> <inceptionYear>2008</inceptionYear> <!--在这里统一设定依赖的版本号,便于统一管理--> <properties> <scala.version>2.11.8</scala.version> <kafka.version>0.9.0.0</kafka.version> <spark.version>2.2.0</spark.version> <hadoop.version>2.6.0-cdh5.7.0</hadoop.version> <hbase.version>1.2.0-cdh5.7.0</hbase.version> </properties> <repositories> <!--添加cloudera仓库链接--> <repository> <id>cloudera</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos</url> </repository> <repository> <id>scala-tools.org</id> <name>Scala-Tools Maven2 Repository</name> <url>http://scala-tools.org/repo-releases</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>scala-tools.org</id> <name>Scala-Tools Maven2 Repository</name> <url>http://scala-tools.org/repo-releases</url> </pluginRepository> </pluginRepositories> <!--各种依赖--> <dependencies> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> //这里使用引用的方式语法格式是${xxx.version} <version>${scala.version}</version> </dependency> <!--kafka 依赖--> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <version>${kafka.version}</version> </dependency> <!--hadoop-client依赖--> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>${hadoop.version}</version> </dependency> <!--hbase-client依赖--> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>${hbase.version}</version> </dependency> <!--hbase-server 依赖--> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> <version>${hbase.version}</version> </dependency> <!--sparkStreaming 依赖 这里的2.11是指的编译的scale的版本 --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.11</artifactId> <version>${spark.version}</version> </dependency> <!--Spark Streaming整合Flume 依赖--> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming-flume_2.11</artifactId> <version>${spark.version}</version> </dependency> <!--spark SQL--> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>${spark.version}</version> </dependency> <!--jar 包冲突--> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-scala_2.11</artifactId> <version>2.6.5</version> </dependency> <!-- https://mvnrepository.com/artifact/net.jpountz.lz4/lz4 --> <dependency> <groupId>net.jpountz.lz4</groupId> <artifactId>lz4</artifactId> <version>1.3.0</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.31</version> </dependency> </dependencies> <build> <sourceDirectory>src/main/scala</sourceDirectory> <testSourceDirectory>src/test/scala</testSourceDirectory> <!--添加各种插件--> <plugins> <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> <configuration> <scalaVersion>${scala.version}</scalaVersion> <args> <arg>-target:jvm-1.5</arg> </args> </configuration> </plugin> </plugins> </build> <reporting> <plugins> <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <configuration> <scalaVersion>${scala.version}</scalaVersion> </configuration> </plugin> </plugins> </reporting> </project>
相关文章推荐
- 初次使用MAVEN管理项目,需要注意以下几点,简单总结下
- 有关TinyXML使用的简单总结
- opengl非全屏绘图的简单使用总结
- opengl非全屏绘图的简单使用总结
- PHP学习使用资源简单总结
- 转贴-有关TinyXML使用的简单总结
- 有关TinyXML使用的简单总结
- Delphi下使用指针的简单总结
- 有关TinyXML使用的简单总结
- C# WinForm CheckedListBox 使用的相关简单总结
- mecgrid使用简单总结
- 总结Dynamips下使用SDM及配置QOS的简单过程
- 用ant来打包简单的ejb(jboss)的总结 使用ant
- 【转】有关TinyXML使用的简单总结
- 有关TinyXML使用的简单总结
- 有关TinyXML使用的简单总结
- 有关TinyXML使用的简单总结
- PHP学习使用资源简单总结
- C# WinForm CheckedListBox 使用的相关简单总结
- Delphi下使用指针的简单总结 推荐