`

maven引入学习

 
阅读更多
http://www.cnblogs.com/hanwesley/articles/1948230.html

Maven简单介绍
Maven是基于项目对象模型(Project Object Model),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.
掌握maven就是要学会如何编写pom.xml,尤其对于多个子项目的管理
约定俗成
src/main/java  存放Java文件
src/main/resources  存放资源文件
src/main/test  存放测试文件
Maven坐标
<groupId>com.ibatis</groupId>  项目属于哪个组
<artifactId>ibatis-sqlmap</artifactId>  项目在组中唯一的ID
<version>2.1.0.565</version>  项目当前的版本
<name>ibatis sqlmap包</name>  非必需,描述信息
在Maven中任何的jar,POM,或者war都是基于坐标进行区分的
Maven主项目和子项目管理的不同
  主项目jar包版本统一管理
<dependencyManagement>
  子项目不用指定jar包版本
指定当前项目的坐标:
<groupId>com.taobao.newLauncher</groupId>
<artifactId>newLauncher-biz-home</artifactId>
<name>newlauncher-biz-home</name>
<version>1.0.0</version>
<packaging>jar</packaging>
如果是主pom文件, packaging指定为pom
如果是要生成的war包,packaging指定为war

主项目指定子项目
    <modules>
       <module>newlauncher-biz-core</module>
       <module>newlauncher-biz-home</module>
  </modules>

子项目需要指定parent
  <parent>
       <artifactId>newLauncher</artifactId>
       <groupId>com.taobao.newLauncher</groupId>
       <version>1.0.0</version>
</parent>
Maven命令
mvn clean     删除target目录内容
mvn package   打包
mvn install   让项目真正引用生成的jar包
mvn test      执行测试用例
Maven插件
1)maven-compiler-plugin 指定JDK版本
      <plugin>
             <artifactId>maven-compiler-plugin</artifactId>
             <version>2.3.2</version>
             <configuration>
              <source>1.6</source>
              <target>1.6</target>
              <showWarnings>true</showWarnings>
              <encoding>gbk</encoding>
             </configuration>
             <dependencies>
              <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-compiler-javac</artifactId>
                <version>1.8.1</version>
              </dependency>
             </dependencies>
       </plugin>

2)maven-war-plugin 打war包 在web子项目中指定

<build>         
    <finalName>launcher</finalName>
    <directory>target/jboss</directory>
     <plugins>
             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                    <webResources>
                        <resource>
<directory>src/main/resources</directory>
                            <filtering>true</filtering>
                            <includes>
                                <include>**/*.xml</include>
                                <include>**/*.vm</include>
                            </includes>
                            <targetPath>WEB-INF</targetPath>
                        </resource>  
                    </webResources>
                </configuration>
            </plugin>
        </plugins>
</build>

3)单元测试插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.6</version>
    <configuration>
       <testFailureIgnore>true</testFailureIgnore>
<!-单元测试失败依然打包-->
       <skip>true</skip> 是否过滤单元测试
       <!--<includes>
           <include>**/*Test.java</include>
       </includes>-->
       <excludes>
           <exclude>**/*Test.java</exclude>
         </excludes>
    </configuration>
</plugin>

4)jar包插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.1</version>
    <configuration>
       <archive>
          <addMavenDescriptor>false</addMavenDescriptor>
是否增加maven描述信息
           <manifest>
<addDefaultImplementationEntries>
true
</addDefaultImplementationEntries>
           </manifest>
           <manifestEntries>
          <Implementation-Build>${buildNumber}</Implementation-Build>
           </manifestEntries>
       </archive>
    </configuration>
</plugin>

5)resource插件  类似antx的auto-config功能
Mvn package –Pdev  dev即定义的ID
Antx中的属性文件在Maven中如何引用?
在主pom.xml中增加配置属性
<profiles>中可以有多个profile, id需唯一

<profiles>
       <profile>
           <id>dev</id>
           <properties>
           <props>launcher.properties.dev</props>
  <dependency.version.ext>-SNAPSHOT</dependency.version.ext>
           </properties>
           <activation>
              <activeByDefault>true</activeByDefault>
是否默认引用此文件 如果此项为true,引用此文件 参数-P可以不加
           </activation>
       </profile>
    </profiles>

根据外部属性文件填写需要过滤文件中的变量,默认会生成到classes目录

<filters>
           <filter>jdbc.properties.dev</filter>
Filter 配置项指定过滤那个文件?
1) 可以写文件名
2) 也可以写-P指定的profile ,
引用的是上述定义的profile dbc.properties.dev替换为../${props}
       </filters>
       <resources>
           <resource>
              <directory>src/main/resources</directory>
              <filtering>true</filtering>
true需要过滤,false不需要过滤
              <includes>  需要过滤的文件
                  <include>**/*.*</include>
                  <include>**/*</include>
              </includes>
              <excludes> 那些文件不需要移动到classes目录
              <exclude>**/*.xml</exclude>
              <exclude>**/*.vm</exclude>
              </excludes>
           </resource>
           <resource>
              <directory>src/main/java</directory>
              <includes>
                  <include>**/*.xml</include>
              </includes>
           </resource>
       </resources>
6)maven-eclipse-plugin插件
    <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-eclipse-plugin</artifactId>
                  <version>2.8</version>
                  <configuration>
                     <sourceExcludes>
                         <sourceExclude>**/.svn/</sourceExclude>
                     </sourceExcludes>
                     <downloadSources>true</downloadSources>
                  </configuration>
              </plugin>
Maven库配置
Maven从中央仓库下载这些资源文件,如果需要修改项目的下载地址,可以在主pom.xml文件中加入:
<repositories></repositories> 中任意增加repository仓库
<repository>
     <id>simba-nexus</id>
<url>http://mvnrepo.maven.com/nexus/content/repositories/releases</url>
     <releases>
       <enabled>true</enabled>
    </releases>
    <snapshots>
       <enabled>false</enabled>
    </snapshots>
</repository>



//////////////////////////////////////
http://hi.baidu.com/guorabbit/blog/item/40f3f2dca741d4aacc11667f.html

maven 根据不同的环境打war包-->资源文件的处理方式

发现犯的错误:

1. 指定了testResource 文件夹与resource 为同一个文件夹。导致不论在resource 里面如何过滤文件,都不起作用。资源文件本来就是共享的。不必这样指定。

2. 添加在<resources>
    <resource>
     <directory>src/resources</directory>
    </resource>
   </resources> 中的exclude 起作用。使用的路径为相对路径 。应该都是相对于pom 文件的路径 。但是这里使用的路径**/jdbc.properties 这种方法生效。

3. 添加在maven-war-plugin 中的<overlays>
       <overlay>
        <groupId>bingo.project.fap</groupId>
        <artifactId>bingo.aip.portal</artifactId>
        <excludes>
         <exclude>
          **/config/jdbc.properties
         </exclude>
        </excludes>
       </overlay>
      </overlays> 并没有生效。

4. 添加在maven-war-plugin 中的warSourceExcludes :

      <warSourceExcludes>
       **/jdbc.properties,**/acegi.properties
      </warSourceExcludes>

有效。可以使用, 分隔不同的文件。但是路径使用WebRoot起始和WEB-INF 都没有起作用。

这种打包的方式还有待试验。
分享到:
评论

相关推荐

    Maven引入本地Jar包并打包进War包中的方法

    "Maven引入本地Jar包并打包进War包中的方法" Maven是一种流行的项目管理工具,主要用于Java项目的构建、测试和部署。在实际开发中,我们经常需要引入本地Jar包以满足项目的需求。本文将介绍Maven引入本地Jar包并...

    [SSH+Maven+Bootstrap视频教程]_10. 使用Maven引入相关jar包.zip

    使用Maven引入相关jar包" 的主题中,我们将深入探讨如何在Java项目中利用Maven管理依赖,特别是针对SSH(Struts2、Spring、Hibernate)框架的应用。SSH是Java开发中广泛使用的三大开源框架,它们各自负责Web层、...

    【Java实战教程】10. 使用Maven引入相关jar包.zip

    学习并熟练掌握使用Maven引入相关jar包,对于Java开发者来说至关重要。这不仅可以简化项目管理,提高开发效率,还可以确保团队成员使用一致的库版本,减少因依赖冲突导致的问题。通过理解POM、Maven仓库、生命周期和...

    maven项目学习笔记记录

    **Maven项目学习笔记记录** 在软件开发领域,Maven是一个强大的项目管理和构建工具,尤其在Java开发中广泛使用。本笔记将深入探讨Maven的核心概念、主要功能以及实际应用场景,帮助你更好地理解和掌握这一重要工具...

    maven学习帮助文档

    依赖的版本冲突问题,Maven通过“nearest wins”策略来解决,即最近引入的依赖优先。 ** Maven的坐标系统 ** 每个Maven项目都有唯一的坐标,由groupId、artifactId和version组成。例如,`groupId=com.example`,`...

    maven3.0.4学习教程

    ### Maven3.0.4学习教程关键知识点解析 #### 一、Maven简介与优势 Maven是一款由Apache基金会提供的项目构建和管理工具,它的设计理念是希望通过自动化和规范化的手段来简化软件项目的构建过程,从而提高开发效率...

    AES加密算法示例,一个完整的maven项目

    通过这个简单的项目,你可以学习到: - Maven项目的构建和依赖管理。 - Java中的加密API使用。 - AES加密算法的原理和实现。 - 如何在Java代码中进行数据的加密和解密。 总的来说,这个项目是一个很好的起点,可以...

    grails3.2.8的maven依赖

    Maven会自动解析这些依赖并下载到本地仓库,然后在构建过程中将它们引入到Grails应用中。如果需要排除某个特定的依赖,可以通过`&lt;exclusions&gt;`标签实现。此外,Maven的生命周期和构建过程可以通过定义`&lt;build&gt;`标签...

    maven学习教程分享

    Maven是Java开发中的一款项目管理和综合工具...通过以上内容的学习,你将能够熟练地配置和使用Maven,高效地管理你的Java项目。记得实践是检验真理的唯一标准,多动手尝试,结合实际项目,你会对Maven有更深刻的理解。

    Maven3 学习笔记

    Maven3 是 Maven 的第三个主要版本,它增强了性能,提升了用户体验,并引入了更多现代化的构建概念。这篇学习笔记将深入探讨 Maven3 的核心概念、配置以及在实际项目中的应用。 【描述】: 虽然描述部分为空,但...

    示例源码_SpringBoot踩坑记录:IDEA+MAVEN本地 jar 包打包及引入使用_Qc20201217.zip

    本示例源码是关于在使用IntelliJ IDEA(IDEA)和Maven时,如何打包SpringBoot项目为jar包,并进一步在本地引入和使用的详细步骤记录。这个压缩包包含了"打包前"和"打包后"两个阶段的文件,帮助开发者理解整个流程。 ...

    示例源码_SpringBoot踩坑记录:IDEA+MAVEN本地 jar 包打包及引入使用_Qc20201223.zip

    在本压缩包文件"示例源码_SpringBoot踩坑记录:IDEA+MAVEN本地 jar 包打包及引入使用_Qc20201223.zip"中,我们聚焦于SpringBoot项目开发过程中...对于学习SpringBoot开发和Maven的初学者来说,这是一个很好的实践案例。

    maven权威指南高清版+mvn-examples-1.0.zip MAVEN权威指南对应示例代码

    通过`mvn-examples-1.0.zip`中的示例,你可以学习如何创建一个基本的Maven项目,配置POM,管理依赖,使用插件,以及处理多模块项目。这些示例代码覆盖了Maven的常用功能,对于初学者和进阶用户都是宝贵的实践资源。...

    基于spring boot + maven + opencv 实现的图像深度学习

    基于spring boot + maven + opencv 实现的图像深度学习Demo项目,包含车牌识别、人脸识别、证件识别等功能,贯穿样本处理、模型训练、图像处理、对象检测、对象识别等技术点 写在前面的话 这是一个基于spring boot +...

    强悍的Maven学习资料

    **Maven 学习概要** Maven 是一个强大的项目管理工具,主要用于构建、管理和部署 Java 项目。它通过提供一套标准的项目对象模型(Project Object Model,POM)和生命周期概念,使得开发者能够轻松地处理项目的构建...

    maven2学习手册

    ### Maven2 学习手册概览 Maven2作为开源项目的构建工具,相较于其前身Maven1,在功能和性能上进行了显著的优化和扩展。它不仅提升了构建速度,还简化了配置过程,引入了生命周期的概念,并增强了依赖管理,使之...

    基于Maven构建的Spring IoC源码实例

    2. **pom.xml配置**:学习如何在`pom.xml`中声明项目依赖,如Spring框架的核心库,确保Maven能正确下载并管理这些依赖。 3. **Spring IoC容器**:理解Spring IoC容器如何加载bean定义,如通过XML配置文件或者使用...

    Maven心得,简单介绍maven。

    而 Maven 引入了约定,规定了标准的项目目录结构,如 `src/main/java` 用于存放源代码,`src/test/java` 用于存放测试代码。这种约定减少了配置工作,提高了开发效率。Maven 使用声明式配置,只需在 `pom.xml` 文件...

    structs2 + maven demo项目

    这个"Structs2 + Maven Demo项目"是一个学习Structs2框架和Maven集成的好起点,通过实践可以更好地理解两者如何协同工作,构建现代Java Web应用。同时,对于XML映射的理解也是掌握Structs2的关键,这有助于提高Web...

Global site tag (gtag.js) - Google Analytics