林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka
摘要:本文主要讲解是Maven使用过程中一些常用的命令,并配上图片说明,最后还讲了pom.xml文件的一些构造。
生成的文件 如下:
说明: 发布命令 将打包的文件发布到远程参考,提供其他人员进行下载依赖 ,一般是发布到公司的私服,这里我没配置私服,所以就不演示了。
注:通过次命令生产的项目,需要在eclipse中配置M2_HOME的命令,指向你的本地仓库文件夹.
来看看生成的结果:。classpath就是字节码
3、mvn eclipse:clean
清除eclipse的项目文件
看看文件内容,没有project文件 了
eg:com.lin
提示输入artifactId(模块名称):
eg:test-core清理release操作是遗留下来的文件
1、mvn project-info-reports:dependencies
生成项目依赖的报表
2、mvn dependency:resolve
查看依赖
4、mvn dependency:analyze
帮助你分析依赖关系, 用来取出无用, 重复依赖的好帮手
追踪依赖的完整轨迹
jar:jar 打jar包
compile(编译范围)
compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath中可用,同时它们也会被打包。
provided(已提供范围)
provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用。例如,如果你开发了一个web应用,你可能在编译classpath中需要可用的Servlet API来编译一个servlet,但是你不会想要在打包好的WAR中包含这个Servlet API;这个Servlet API JAR由你的应用服务器或者servlet容器提供。已提供范围的依赖在编译classpath(不是运行时)可用。它们不是传递性的,也不会被打包。
runtime(运行时范围)
runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现。
test(测试范围)
test范围依赖 在一般的 编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。
system(系统范围)
system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,Maven也不会在仓库中去寻找它。。如果你将一个依赖范围设置成系统范围,你必须同时提供一个systemPath元素。注意该范围是不推荐使用的(你应该一直尽量去从公共或定制的Maven仓库中引用依赖)。
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.lin.learning</groupId> <artifactId>maven-hellowrold</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>maven-hellowrold</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project>modelVersion 描述这个POM文件是遵从哪个版本的项目描述符。
<project> <modelVersion>4.0.0</modelVersion> <!- The Basics 项目的基本信息-> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <packaging>...</packaging> <dependencies>...</dependencies> <parent>...</parent> <dependencyManagement>...</dependencyManagement> <modules>...</modules> <properties>...</properties> <!- Build Settings 项目的编译设置-> <build>...</build> <reporting>...</reporting> <!- More Project Information 其它项目信息 -> <name>...</name> <description>...</description> <url>...</url> <inceptionYear>...</inceptionYear> <licenses>...</licenses> <organization>...</organization> <developers>...</developers> <contributors>...</contributors> <!-- Environment Settings -> <issueManagement>...</issueManagement> <ciManagement>...</ciManagement> <mailingLists>...</mailingLists> <scm>...</scm> <prerequisites>...</prerequisites> <repositories>...</repositories> <pluginRepositories>...</pluginRepositories> <distributionManagement>...</distributionManagement> <profiles>...</profiles> </project>project是pom.xml的根节点,至于其它元素请参考POM Reference
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.0</version> <type>jar</type> <scope>test</scope> <optional>true</optional> </dependency> ... </dependencies>
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.mygroup </groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <packaging>pom</packaging> </project>packaging 类型,定义值为 pom用于定义为parent和合成多个项目。 当然我们创建的maven项目的pom都继承maven的super pom, 如果想看项目(父或子)的完全的pom结构,可以运行:
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.mygroup </groupId> <artifactId>my-child-project</artifactId> <parent> <groupId>com.mygroup </groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <relativePath>../my-parent</relativePath> </parent> </project>
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.mygroup </groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <modules> <module>my-child-project1<module> <module>my-child-project2<module> </modules> </project>
版权声明:本文为博主林炳文Evankaka原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/evankaka/article/details/47960493