`

Maven 命令的使用 Pom 文件规范

阅读更多

把  Maven 的系统文件下载并保存。 例如我的: D:\NBProject\apache-maven-2.2.1

 

设置环境和变量 。我配置了一个 bat 文件。 执行后, 相关的环境变量就配置好了。

 

 

ECHO OFF

SET JAVA_HOME=D:\Program Files\Java\jdk1.6.0

SET M2_HOME=D:\NBProject\apache-maven-2.2.1

SET PATH=%PATH%;%M2_HOME%\bin

ECHO 准备执行测试Maven的版本信息.....

PAUSE

mvn -v

 

 

 然后新建一个文件夹, 建立 pom.xml 文件 。 规范 :

 

 groupId 定义了你的公司和组织的信息 。 比如,你的公司是 mycom , 项目是  myapp 那么,最好就定义

 

<groupId>com.mycom.myapp</groupId>

 

artifactId  就定义为项目的名称, 在我们项目中,如果和项目名称不一致,就导致Maven不能编译,

 

<artifactId>travel-hotel-admin</artifactId>

 

 版本定义:

 

<version>2.0.0-SNAPSHOT</version>

 

 SNAPSHOT 表示是快照版本, 尚在开发中的不稳定版本 。 Maven 遇到这种标记的版本号时, 每次都会去中央库取最原始的 Jar 包 。

 

<packaging>war</packaging>

 

打包类型   jsr war pom  它们的打包执行的命令不一样.

 

 

我们源代码最好也就按照 groupId 定义的名称,包名就定义为   com.mycom.myapp.xxxxxxx.xxxxxxxx

 

Eclipse中的项目还是包依赖:

比如: 项目中,包含这个依赖:


        <dependency>
            <groupId>com.woyo.travel</groupId>
            <artifactId>travel-common-server-api</artifactId>
            <version>2.0.0-SNAPSHOT</version>
        </dependency>

 

而且, Eclpse 也打开了这个工程,  那么Eclipse就会依赖这个工程.  如果这个工程被关闭了, 那么,就会去本地仓库中查找所依赖的Jar包。此时, 就是Jar包依赖了。 有时候,

 

 

POM 工程的继承:

 

通过在父工程中定义好 版本号, groupId ,version 等参数, 继承的工程不用定义这些参数,就会自动继承。

 

travel/pom.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<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.xxxxxxxxx.travel</groupId>
	<artifactId>travel-hotel</artifactId>
	<packaging>pom</packaging>
	<name>travel hotel Parent pom.xml</name>
	<version>2.0.0-SNAPSHOT</version>
	<organization>
		<name>travel</name>
		<url>http://hotel.travel.woyo.com</url>
	</organization>
	
    <modules>
        <module>travel-hotel-admin</module>
        <module>travel-hotel-cc</module>
    </modules>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <filters>
      <filter>${user.home}/travel_hotel.properties</filter>
    </filters>
    </build>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<!-- 主要依赖库的版本定义 -->
		<spring.version>2.5.6</spring.version>
		<spring.security.version>2.0.5.RELEASE</spring.security.version>
		<struts2.version>2.2.1</struts2.version>
		<ibatis.version>2.3.4.726</ibatis.version>
		<mysql-driver.version>5.1.12</mysql-driver.version>
		<slf4j.version>1.6.1</slf4j.version>

		<!-- Plugin的属性定义 -->
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<urlrewritefilter.version>3.1.0</urlrewritefilter.version>
	</properties>
 <dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.4</version>
			<scope>test</scope>
		</dependency>
                ..............................................
	</dependencies>
 </dependencyManagement>
</project>

 

 

子工程定义在

 

travel/travel-hotel/pom.xml

 

这样的目录结构, 子工程的 pom 文件会自动在../pom 得到父工程的pom文件定义,否则需要定义

 

<relativePath>../travel/pom.xml</ relativePath>

 

才能找到

<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>
	<parent>
		<artifactId>travel-hotel</artifactId>
		<groupId>com.woyo.travel</groupId>
		<version>2.0.0-SNAPSHOT</version>
	</parent>
	<groupId>com.woyo.travel</groupId>
	<artifactId>travel-hotel-admin</artifactId>
	<version>2.0.0-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>travel-hotel-admin</name>
	<dependencies>
		<dependency>
			<groupId>com.woyo.travel</groupId>
			<artifactId>travel-common-server-api</artifactId>
			<version>2.0.0-SNAPSHOT</version>
		</dependency>
	</dependencies>

</project>

 

 运行了  Maven install 命令后 , 会在本地 repository 仓库生成 对应的文件.

 

如果是打包成 war 包, 会自动把相应的 资源文件 , 依赖的 jar 包(包括传递依赖的)全部 Copy 到web-inf 目录,

 

 

衍生问题:

Maven 中 Jar 包传递依赖的问题:

 

Maven 2 的一个很明显的优势就是jar 包传递依赖的解决。

 

如果你使用的是m2eclipse 插件,那么最简单的找到传递依赖冲突的插件的方法,就是在Eclipse 中,打开pom.xml时,使用open with Maven Pom Editor,查看Dependency Hierachy,输入想查找的jar包名,可以看到它的父级依赖关系,即它是谁的传递依赖,有几个jar包依赖到这个jar包,分别使用的是什么版本都可以看到。

 

分享到:
评论
2 楼 Jxdwuao 2011-05-18  
Jason(aijun) 写道
吴总,啥时候给我们讲讲。

懂点皮毛阿 咋讲列
1 楼 Jason(aijun) 2011-05-17  
吴总,啥时候给我们讲讲。

相关推荐

    maven-root.pom

    此外,"maven-root.pom" 还可以用来定义全局的构建插件和配置,如编码规范检查、代码覆盖率报告等,确保整个项目遵循一致的开发标准和流程。 总的来说,"maven-root.pom" 在多模块 Maven 项目中扮演着举足轻重的...

    maven使用文档,maven使用文档

    - Maven 允许在 POM 文件中使用 exclusions 来排除不需要的依赖。 - 例如,如果一个依赖项引入了一个不需要的依赖,可以通过 `&lt;exclusions&gt;` 节点来排除它。 9. **settings.xml 文件详解** - **Local ...

    Maven之pom.xml配置文件详解.pdf

    当其他项目或用户希望引用当前项目生成的jar包时,他们需要在其pom文件中新建一个dependency节点,将当前项目的groupId、artifactId、version写入,Maven会自动下载对应的jar包到用户的本地。 依赖关系在Maven中...

    maven 简单使用教程

    - 创建项目:使用`mvn archetype:generate`命令创建新项目,交互式选择模板,定义groupId、artifactId、version和package。 - Java项目: - 生成的项目结构包括pom.xml、src/main/java和src/test/java目录。 - ...

    maven-parent:Apache Maven项目父POM

    描述中的 "maven-parent:Apache Maven项目父POM" 是对标题的补充,强调这是一个关于Apache Maven项目的核心父POM文件,它在Maven项目中起着核心指导作用。 标签 "java" 表明这是与Java开发相关的资源,而 "maven" ...

    apache-maven-3.5.2压缩文件

    其中,它增强了对大型POM文件的处理能力,提高了依赖解析速度,同时修复了一些可能导致构建失败的问题。此外,该版本还改进了与其他工具(如IDEs)的集成,使得开发者能更流畅地使用Maven进行开发。 总结,Apache ...

    apache-maven-3.1.1

    Apache Maven 是一个强大的项目管理和构建工具,主要...安装后,开发者可以通过命令行工具执行Maven命令,进行项目构建和管理。随着版本的更新,Maven持续优化性能,增加新功能,使得Java项目的开发更加规范和高效。

    maven2 使用手册

    Maven通过XML格式的配置文件(pom.xml)来描述项目信息、依赖关系以及构建指令,使得开发人员可以轻松地管理和维护多个项目。 ### Maven 基础概念 1. **Project Object Model (POM)**: Maven 的核心是POM,它是一个...

    maven配置文件

    总的来说,Maven通过规范化的项目结构和强大的配置文件,为Java开发带来了一套标准且便捷的构建流程。正确理解和熟练使用Maven配置文件,能帮助开发者更高效地管理项目,减少依赖冲突,提高开发效率。

    maven3.6.1和3.6.3安装包

    2. **配置环境变量**: 在系统环境变量中设置`MAVEN_HOME`指向Maven的安装目录,并将`%MAVEN_HOME%\bin`添加到`PATH`变量中,这样可以在命令行中直接运行Maven命令。 3. **验证安装**: 打开命令行,输入`mvn -version...

    apache-maven-3.9.0-bin.tar

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它基于项目对象模型...通过理解Maven的工作原理、配置POM.xml文件以及熟练使用Maven命令,开发者可以更高效地管理项目和构建流程。

    maven 常用命令

    在软件开发过程中,Maven作为一个强大的项目管理和构建工具,它简化了Java项目的构建流程,统一了项目的构建配置。本文将详细介绍Maven的一些常用...同时,保持pom.xml文件的整洁和规范,是保证项目构建顺利的关键。

    maven管理工具

    1. **依赖管理**:Maven通过POM文件来管理项目的依赖关系,自动下载所需的库文件,避免了手动管理jar包的麻烦。 2. **构建生命周期**:Maven拥有清晰的构建生命周期,包括编译、测试、打包、部署等阶段,开发者只...

    maven-3.2.5工具下载

    在`pom.xml`中,开发者可以声明项目依赖、插件、构建目标等信息,Maven会自动下载所需的库文件,并按照预定义的生命周期阶段(如编译、测试、打包、部署等)执行任务。 Maven-3.2.5版本中包含的主要组件有: 1. **...

    Maven 教程:基础篇-尚硅谷学习笔记 2022年

    POM是Maven的核心,它是一个XML文件,包含了关于项目的配置信息,如项目名称、版本、描述、开发者信息、依赖、构建目标等。通过POM,Maven可以自动下载所需的库文件,编译源代码,运行测试,打包和部署项目。 ### 2...

    apache-maven-3.5.4.zip

    1. **bin目录**:包含了Maven的可执行脚本,如`mvn`,用于在不同操作系统上运行Maven命令。Windows用户会使用`mvn.bat`,而Linux或Mac用户则使用`mvn`脚本。 2. **conf目录**:包含Maven的配置文件,如`settings....

    Maven手把手入门教程

    通过阅读"Maven手把手入门"教程,你可以掌握如何设置Maven环境,创建和管理项目,以及使用各种Maven命令。这将帮助你快速融入Java开发团队,并有效地管理复杂的项目依赖。无论你是初学者还是经验丰富的开发者,Maven...

Global site tag (gtag.js) - Google Analytics