Maven安装
Maven内存调整
Linux环境
vi $M2_HOME/bin/mvn
在 MAVEN_OPTS
后面加上 -Xms128m -Xmx512m
调整后如下:
MAVEN_OPTS="(concat_lines "MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS -Xms128m -Xmx512m"
私服修改
pom.xml 参数说明
pom.xml文件是一个项目最核心的maven配置文件,包含了大量的信息,maven正是基于这里的配置信息来对工程进行构建等管理工作。一个最最基本的pom.xml文件如maven生成的pom.xml所示。
<project>
:pom.xml中的顶层元素
<modelVersion>
:POM本身的版本号,一般很少变化
<groupId>
:创建这个项目的公司或者组织,一般用公司网站后缀,比如com.company,或者cn.company
<artifactId>
:这个项目的唯一标识,一般生成的jar包名称,会是<artifactId>-<version>.<extension>
这个格式,比如说myapp-1.0.jar
<packaging>
:要用的打包类型,比如jar,war,等等。
<version>
:这个项目的版本号
<name>
:这个项目用于展示的名称,一般在生成文档的时候使用
<url>
:这是这个项目的文档能下载的站点url,一般用于生成文档
<description>
:用于项目的描述
依赖范围 scope
<scope></scope>
maven有三套classpath,classpath,就是项目中用到的各种依赖的类,jvm在运行的时候需要去classpath下面加载对应的类
1 2 3 4 |
maven在编译源代码的时候,有一套classpath; 在编译测试代码以及执行测试代码的时候,有一套classpath; 运行项目的时候,有一套classpath; |
依赖范围就是用来控制依赖包与这三种classpath的关系的。
简单来说,不同的依赖范围,会导致那个依赖包可能在编译、测试或者打包运行的时候,有时候可以使用,有时候不能够使用
compile
:默认,对编译、测试和运行的classpath都有效。一般都是用这种scope
test
:仅仅对于运行测试代码的classpath有效,编译或者运行主代码的时候无效,仅仅测试代码需要用的依赖一般都会设置为这个范围,比如junit。一些测试框架,或者只有在测试代码中才会使用的一些依赖,会设置为test,这个的好处在于说,打包的时候这种test scope的依是不会放到最终的发布包里去的。减少发布包的体积。
provided
:编译和测试的时候有效,但是在运行的时候无效,因为可能环境已经提供了,比如servlet-api,一般就是这个范围,在运行的时候,servlet容器会提供依赖。servlet-api是用来开发java web项目的,可能你在开发代码和执行单元测试的时候,需要在pom.xml里面声明这个servlet-api的依赖,因为要写代码和测试代码。但是最终打完包之后,放到tomcat容器里面去跑的时候,是不需要将这个servlet-api的依赖包打入发布包中的,因为tomcat容器本身就会给你提供servlet-api的包。
runtime
:测试和运行classpath有效,但是编译代码时无效,比如jdbc的驱动实现类,比如mysql驱动。因为写代码的时候是基于javax.sql包下的标准接口去写代码的。然后在测试的时候需要用这个包,在实际运行的时候才需要用这个包的,但是编译的时候只要javax.sql接口就可以了,不需要mysql驱动类。一般我们声明mysql驱动的时候,不会设置为runtime,因为也许你开发代码的时候会用到mysql驱动特定的api接口,不仅仅只是用javax.sql。
原创文章,转载请注明: 转载自LoserZhao – 诗和远方[ http://www.loserzhao.com/ ]
本文链接地址: http://www.loserzhao.com/java/maven-pom-xml-configuration.html
文章的脚注信息由WordPress的wp-posturl插件自动生成
0 条评论。