篇二:pom.xml文件

pom.xml文件是maven工程的标志性文件

一、基础属性定义

  1、jar坐标定义

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.spider</groupId>
  <artifactId>com.spider.webmagic</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging> 

  2、name、url无实质意义的设置

<!-- 项目的名称, Maven产生的文档用 -->
<
name>guduo-common-parent</name>

<!-- 项目主页的URL, Maven产生的文档用 -->
<url>http://maven.apache.org</url>

  3、nexus私服配置

    <distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <name>Nexus Release Repository</name>
            <url>http://192.168.1.90:8081/nexus/content/repositories/public/</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Nexus Snapshot Repository</name>
            <url>http://192.168.1.90:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

  4、参数标签化配置:全局统一配置,多处使用、一处修改

    标签化配置属性值,在需要用的地方${common-model.version}

  <properties>
      <common-model.version>1.0-SNAPSHOT</common-model.version>
      <common-interface.version>1.0-SNAPSHOT</common-interface.version>
  </properties>

 

二、工程依赖

  1、dependency依赖jar包

  2、父工程中dependencyManagement配置jar包版本,需要用的地方,只需要引入groupId/artifactId

  3、scope定义jar范围

三、项目构建

  1、resources:资源文件

    资源文件配置,maven工程默认的文件路径src/main/java、src/main/resources,工程打包时,默认会把src/main/java路径下的.java文件打包,以   及src/main/resources中的各种配置文件。以下几种情况需要配置

    a、配置文件存在于src/main/java目录下,不会自动打包到jar包中;

    b、只需要打包特定的配置文件,另外一些文件不需要打包

    学习地址:http://www.cnblogs.com/pixy/p/4798089.html

           http://casheen.iteye.com/blog/540385

<build>
    .......
      <resources>
        <resource>
            <directory>src/main/resources</directory>
            <!-- 不打包文件列表 -->
            <excludes>
                <exclude>**/*.properties</exclude>
                <exclude>**/*.xml</exclude>
             </excludes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <!-- 读取文件地址 -->
            <directory>src/main/java</directory>
            <!-- 打包地址 -->
            <targetPath>${project.build.directory}/classes</targetPath> 
            <!-- 打包文件列表 -->
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <!-- false设置配置文件中${key}不替换配置的参数,原封不动 -->
            <filtering>false</filtering>
        </resource>
    </resources>
    ......
</build>

 

  2、piugins:项目打包部署

   pom工程中pluginManagement中定义的插件,module工程(子工程)中引入只需要groupId、artifactId就可以,如果需要特殊配置,加上会覆盖父工程的配置。

<build>
    ......
    <plugins> 
        <!-- 编译插件,建议放在pom工程plugins中,统一部署maven工程编译时jdk版本 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <failOnError>true</failOnError>
                <verbose>true</verbose>
                <fork>true</fork>
                <compilerArgument>-nowarn</compilerArgument>
                <source>1.7</source>
                <target>1.7</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin> 
        
        <!--  发布插件,建议放在pom工程plugins中,自动发布到远程本地库或远程私有库  -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.7</version>
            <configuration>
                <uniqueVersion>false</uniqueVersion>
            </configuration>
        </plugin>
        
        <!--  源码插件,建议放在pom工程plugins中,生成源码jar包,即***-***-sources.jar  -->
        <plugin>   
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-source-plugin</artifactId>  
            <version>2.1.2</version>  
            <!-- 发布时自动将源码同时发布的配置 -->  
            <executions>  
                <execution>  
                    <id>attach-sources</id>  
                    <goals>  
                        <goal>jar</goal>  
                    </goals>  
                </execution>  
            </executions>  
        </plugin>
    </plugins>

    <pluginManagement>
        <!-- 打包插件 --> 
        <plugins>
            <!--  将项目打包为可执行jar文件,包括第三方依赖jar引用路径配置到manifest文件中,否则寻找不到第三方jar  -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <classesDirectory>target/classes/</classesDirectory>
                        <!--  生成的jar中,不要包含pom.xml和pom.properties这两个文件  -->
                        <addMavenDescriptor>false</addMavenDescriptor>
                        <manifest>
                            <!--  是否要把第三方jar放到manifest的classpath中  -->
                            <addClasspath>true</addClasspath>
                            <!-- 生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/ -->
                            <classpathPrefix>${jar-class-path-prefix}</classpathPrefix>
                            <!--  应用的main class,如果用的dubbo,需要引入dubbo的main:com.alibaba.dubbo.container.Main  -->
                            <mainClass>${jar-main-class}</mainClass>
                            <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
                            <useUniqueVersions>false</useUniqueVersions>
                        </manifest>
                        <!-- manifest文件中classpath独立添加部分 -->
                        <manifestEntries>
                            <Class-Path>.</Class-Path>
                        </manifestEntries>
                    </archive>
                    <!-- <outputDirectory>${jar-output-dir}</outputDirectory> -->
                </configuration>
            </plugin>
            
            <!--  第三方依赖jar统一存放到指定路径,maven-jar-plugin只是导入了第三方jar的引用路径  -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>install</phase>
                        <goals>
                        <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <type>jar</type>
                            <includeTypes>jar</includeTypes>
                            <useUniqueVersions>false</useUniqueVersions>
                            <!--  依赖的第三方jar排除在外,新环境发布需要注释掉此行  -->
                            <excludeGroupIds>com.gohihi.api</excludeGroupIds>
                            <!--  依赖jar包存放目录  -->
                            <outputDirectory>
                                ${project.build.directory}/lib/
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            
            <!-- 解决Maven插件在Eclipse内执行了一系列的生命周期引起冲突 -->
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-dependency-plugin</artifactId>
                                    <versionRange>[2.0,)</versionRange>
                                    <goals>
                                        <goal>copy-dependencies</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        
            <!-- 单元测试插件 -->  
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-surefire-plugin</artifactId>  
                <version>2.7.2</version>  
                <configuration>  
                    <skip>true</skip> 
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>  
            </plugin>
        </plugins>
    <pluginManagement>
    ......
</build>

 

  3、defaultGoal:自动批量打包,Run As --》maven-build,当Goals(mvn命令:clean、package、install)为空时,设置的默认值

posted @ 2017-03-15 23:03  刘广平  阅读(248)  评论(0)    收藏  举报