Maven 学习

maven pom.xml 标签详解:http://blog.csdn.net/sunzhenhua0608/article/details/32938533

Maven多模块项目管理小结http://blog.csdn.net/whuslei/article/details/7989102

尚硅谷视频笔记

maven核心:

1》约定的目录结构 2》POM 3》坐标 4》依赖管理 5》仓库管理 6》生命周期 7》插件和目标 8》继承 9》聚合

结构:

hello:根目录,工程名

——src:源码

————main:主程序

——————java:java源文件

————————resources:框架或者其他工具的配置文件

————test:测试主程序

——————java

————————resources

——pom.xml:Maven核心配置文件

常用命令

mvn clean:清理

mvn compile:编译

mvntest-compile:测试编译

mvntest:测试

mvnpackage:打包(把jar打到本项目的target下)

mvn install:安装(把打出的包装载到本地仓库)

mvn site:生成站点

坐标:Maven使用三个向量在仓库中唯一定位一个Maven工程

<groupid>com.baidu.maven</groupid>

<artifactid>TestMaven</artifactid>

<version>1.0.0</version>

<packaging>jar</packaging>

groupid:公司或组织域名的倒叙+项目名

artifactid:模块名

version:版本

packaging:打包方式:也可以不写,但创建时肯定需要指定

Maven工程与仓库路径的对应关系

com/baidu.maven/TestMaven/1.0.0

仓库:

本地仓库:当前电脑上的仓库。

私服:搭建在局域网中,Nexus。

中央仓库:为全世界服务。

镜像库:为亚洲服务,加快访问速度。

依赖:

<dependency>
	<groupid>com.baidu.maven</groupid>
	<artifactid>TestMaven</artifactid>
	<version>1.0.0</version>
	<scope>compile</scope>
</dependency>

maven解析依赖信息时,会去本地仓库找依赖的jar包。

我们自己开发的maven工程,使用install命令即可安装到本地库

Maven依赖范围及依赖传递 http://www.cnblogs.com/beenupper/p/3344208.html

依赖域:scop  依赖范围就是控制在编译,测试,运行时的classpath的关系

compile:编译依赖范围。编译,测试,运行都需要 如spring-core  (不填  默认是这个)

test:测试依赖范围。不参与编译和运行,仅测试需要  如junit

runtime: 运行时依赖范围。不参与编译测试、运行时需要。如JDBC驱动包

provided:已提供依赖范围。编译、测试需要,不参与运行  如servlet-api、jsp-api(tomcat等容器自带,使用不当会造成编译冲突)

import: 继承当前依赖中的全部依赖,或者说 解决了 maven中的 单继承问题http://blog.csdn.net/u011686226/article/details/60469057

system:系统依赖范围。本地仓库依赖,不在maven中央仓库(不推荐使用) 参考自:http://www.cnblogs.com/beenupper/p/3344208.html

eclipse中使用maven:

1修改成自行解压安装的maven. 在eclipse的Preferences-Maven-Installations 选择

2指定user settings:conf/settings.xml文件   方便修改本地库的位置。

3默认创建的maven项目使用的jre是偏低的版本

打开settings.xml文件,找到profiles标签

<profile>
  <id>jdk-1.7</id>
  <activation>
    <activeByDefault>true</activeByDefault>
    <jdk>1.7</jdk>
  </activation>
  <properties>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
  </properties>
 </profile>

创建maven工程步骤:New--New Maven Project--勾选Create a simple project(skip archetype selection)--填写Group Id、Artifact Id、Packageing(默认jar

区分web工程的地方:创建时选择打包方式:war

项目属性:找到Project Facets--Dynamic Web Module 2.5(取消勾选 再选中,等于转换成了web工程)

pom.xml错误:An error occurred while filtering resources。确保xml文件中其他错误被修正时,可以使用 mvn -clean 清除掉项目上的×

导入手动建立的Maven:Import -- Existing Maven Projects--选择文件夹 --Finish即可

导入其他项目为依赖,编译之前需要先进行安装

<dependency>
  <groupId>com.baidu.maven</groupId>
  <artifactId>TestMaven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <type>jar</type>
  <scope>compile</scope>
</dependency>

依赖的传递:最底层的被依赖项目中的pom所需要的jar包,如果设定域为:compile会传递,test本包可用,provided本包可用

依赖的排除:从当前项目开始生效,后续项目如果依赖当前项目,排除都有效。

<exclusions>
	<exclusion>
		<groupId>com.baidu.maven</groupId>
		<artifactId>TestMaven</artifactId>
	</exclusion>
</exclusions>

依赖的原则:多个依赖版本不同时,路径最短者优先,取最近的项目依赖的版本

如: a->b->c1.1  和 d->c1.0 , 项目中同时倒入a,d包, 则优先使用C1.0版本

路径相同时:如两个项目同时依赖进来,先声明者优先,指的是dependency的顺序

统一管理依赖的版本:

properties标签内使用自定义标签统一声明版本号,在需要统一版本的位置,使用${自定义标签名}

<properties>
        <baidu.spring.version>4.0.0</baidu.spring.version>
</properties>

<properties>标签还可以用作别的声明,不仅仅是版本号。

继承:

方便统一管理各个模块工程中的依赖,将所有依赖提取到”父“工程中,在子工程中依赖时不指定版本。

步骤

1》创建一个Maven工程作为父工程。注意:打包的方式pom

2》在子工程中声明对父工程的引用

3》将子工程的坐标与父工程坐标中重复的内容删除

4》在父工程中同意一路的版本

5》在子工程中删除依赖的版本号部分

<parent>
	<groupId>com.baidu.maven</groupId>
	<artifactId>Parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<!-- 以当前文件为基准查找父工程中pom.xml文件的相对路径 -->
	<relativePath>../Parent/pom.xml</relativePath>
</parent>

父工程中<dependencyManagement>标签下配置要统一的依赖<dependencys>...</dependencys>

具体可以自学百度 dependencyManagement和dependencys的区别

聚合:

多个项目需要一个一个安装,单个项目安装时需要先安装父工程

作用:一键安装各个模块工程。

<modules>

    <module>../TestMaven(也可以填写工程pom文件中的artifactId)</module>

</modules>

以后只要操作该聚合项目即可

Web工程自动部署

deploy:将最终的包赋值到远程库,让其他开发人员和项目共享,或者部署到服务器上运行。

不常用,配置如下:

<build>
	<finalName>AtguiguWeb</finalName>
	<plugins>
		<plugin>
			<groupId>org.codehaus.cargo</groupId>
			<artifactId>cargo-maven2-plugin</artifactId>
			<version>1.2.3</version>
			<configuration>
				<container>
					<containerId>tomcat6x</containerId>
					<home>D:\DevInstall\apache-tomcat-6.0.39</home>
				</container>
				<configuration>
					<type>existing</type>
					<home>D:\DevInstall\apache-tomcat-6.0.39</home>
					<!-- 如果Tomcat端口为默认值8080则不必设置该属性 -->
					<properties>
						<cargo.servlet.port>8989</cargo.servlet.port>
					</properties>
				</configuration>
			</configuration>
			<executions>
				<execution>
					<id>cargo-run</id>
					<phase>install</phase>
					<goals>
						<goal>run</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>

查找依赖信息的网站:

http://mvnrepository.com

http://maven.outofmemory.cn/

pom.xml文件举例:

<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.test.maven.web</groupId>
    <artifactId>test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

    </dependencies>
    <properties>
        <test.spring.version>4.0.0</test.spring.version>
    </properties>
</project>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值