Maven精讲05-自动化构建

在pom.xml的build标签配置。

源代码路径约定:

<!-- 构建项目需要的信息 -->
<build>
    <!--源码约定-->
    <!-- java源代码的路径 -->
    <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
    <!-- 测试java源代码的路径。 -->
    <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
    <!-- 脚本代码的路径(如:shell,bat脚本)。注:目前在Maven中没有使用,已经过时了 -->
    <!--<scriptSourceDirectory>${basedir}/src/main/scripts</scriptSourceDirectory>-->
</build>

资源文件约定和过滤:

<!-- 构建项目需要的信息 -->
<build>
    <!--资源文件过滤-->
    <!-- 这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件(配置文件),这些资源最终被包含在最终的打包文件里。 -->
    <resources>
        <!-- 这个元素描述了项目相关或测试相关的所有资源路径 -->
        <resource>
            <!-- 存放原始资源的目录,该路径相对POM路径 -->
            <directory>src/main/resources</directory>
            <!-- 描述了资源的目标路径。存放资源文件处理完成后的文件 -->
            <targetPath>${project.build.directory}/classes</targetPath>
            <!-- 是否使用参数值代替参数名。参数值取自pom文件的properties标签或者特定文件里配置的属性,定文文件在pom文件的filters元素里列出。 -->
            <filtering>true</filtering>
            <!-- 包含的模式列表,例如**/*.xml. -->
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
            <!-- 排除的模式列表,例如**/*.xml -->
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
    </resources>
    <!-- 当project.resources.resource.filtering标签开关打开时,使用到的过滤器属性文件列表 -->
    <filters>
        <filter>filters/filter1.properties</filter>
    </filters>
</build>

编译打包路径约定:

<!-- 构建项目需要的信息 -->
<build>
    <!-- java被编译后的class文件存放的目录。 -->
    <outputDirectory>${basedir}/target/classes</outputDirectory>
    <!-- 测试java被编译后的class文件存放的目录。 -->
    <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>
    <!--打包约定-->
    <!-- 执行构建时默认的goal或phase,如jar:jar或者package等 -->
    <defaultGoal>install</defaultGoal>
    <!-- 构建产生的所有文件存放的目录,默认为${basedir}/target目录 -->
    <directory>${basedir}/target</directory>
    <!-- 产生的构件的文件名,即若是打成war包,war包文件名:${finalName}.war,默认值是${artifactId}-${version}。-->
    <finalName>${artifactId}-${version}</finalName>
</build>

构建功能扩展:

用于添加扩展Maven构建功能的插件。

<!-- 构建项目需要的信息 -->
<build>
    <!-- 使用来自该项目的一系列构建扩展 -->
    <extensions>
        <!-- 描述使用到的构建扩展。 -->
        <extension>
            <!-- 构建扩展的groupId -->
            <groupId>{groupId}</groupId>
            <!-- 构建扩展的artifactId -->
            <artifactId>{artifactId}</artifactId>
            <!-- 构建扩展的版本 -->
            <version>{version}</version>
        </extension>
    </extensions>
</build>

例:

  1. 通过ssh部署项目:(现在一般用 Jenkins处理,很少这么干的了)
    1. <project>
          [...]
          <distributionManagement>
              <repository>
                  <id>proficio-repository</id>
                  <name>Proficio Repository</name>
                  <url>scpexe://sshserver.yourcompany.com/deploy</url>
              </repository>
          </distributionManagement>
          <build>
              <extensions>
                  <extension>
                      <groupId>org.apache.maven.wagon</groupId>
                      <artifactId>wagon-ssh-external</artifactId>
                      <version>1.0-alpha-6</version>
                  </extension>
              </extensions>
          </build>
          [...]
      </project>  
  2. 以FTP方式部署:(现在一般用 Jenkins处理,很少这么干的了)
    1. <project>
          [...]
          <distributionManagement>
              <repository>
                  <id>proficio-repository</id>
                  <name>Proficio Repository</name>
                  <url>ftp://ftpserver.yourcompany.com/deploy</url>
              </repository>
          </distributionManagement>
          <build>
              <extensions>
                  <extension>
                      <groupId>org.apache.maven.wagon</groupId>
                      <artifactId>wagon-ftp</artifactId>
                      <version>1.0-alpha-6</version>
                  </extension>
              </extensions>
          </build>
          [...]
      </project>  

构建插件:

直接参与构建流程的插件

<!-- 构建项目需要的信息 -->
<build>
    <!-- 构建过程中所用到的插件列表 -->
    <plugins>
        <!-- plugin元素包含描述插件所需要的信息。 -->
        <plugin>
            <!-- 插件在仓库里的group ID -->
            <groupId>{groupId}</groupId>
            <!-- 插件在仓库里的artifact ID ,格式一般如下-->
            <artifactId>{pluginpregoal}-maven-plugin</artifactId>
            <!-- 被使用的插件的版本(或版本范围) -->
            <version>version</version>
            <!-- 是否从该插件下载Maven扩展(例如打包和类型处理器),由于性能原因,只有在真需要下载时,该扩展插件才会下载。 -->
            <extensions>true/false</extensions>
            <!-- 在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。 -->
            <executions>
                <!-- execution元素包含了插件执行需要的信息 -->
                <execution>
                    <!-- 执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标 -->
                    <id></id>
                    <!-- 绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段 -->
                    <phase></phase>
                    <!-- 使用该插件执行配置的goals -->
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <!-- 配置是否被传播到子POM,默认true-->
                    <inherited>true/false</inherited>
                    <!-- 该插件所需要的特殊配置,见使用插件的文档,在此命令中执行的特有配置,使用此goals时,覆盖plugin.configuration的配置 -->
                    <configuration>
                        ...
                    </configuration>
                </execution>
            </executions>
            <!-- 项目引入插件所需要的额外依赖,如mysql驱动 -->
            <dependencies>
                <!-- 参见dependencies/dependency元素 -->
                <dependency>
                </dependency>
            </dependencies>
            <!-- 任何配置是否被传播到子项目,默认true -->
            <inherited>true/false</inherited>
            <!-- 该插件所需要的特殊配置,见使用插件的文档 -->
            <configuration>
                ...
            </configuration>
        </plugin>
    </plugins>
</build>

构建插件管理:

用来给子模块使用的插件配置,类似 dependencyManagement:

<build>
    <!-- 子项目可以引用的默认插件信息。该插件配置项直到被引用时才会被解析或绑定到生命周期。给定插件的任何本地配置都会覆盖这里的配置 -->
    <pluginManagement>
        <!-- 使用的插件列表 。 -->
        <plugins>
            <!-- plugin元素包含描述插件所需要的信息。见project.plugins.plugin标签-->
            <plugin>
                ...
            </plugin>
        </plugins>
    </pluginManagement>
</build>

官方插件配置:

Maven官方插件,见:http://maven.apache.org/plugins/index.html 

第三方插件:请自行百度并查看对应的第三方插件的官方文档,Maven的构建插件的特色配置大多数情况下放到configuration标签里。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值