zoukankan      html  css  js  c++  java
  • maven build配置,输出目录,插件

    maven profile 读取不同配置###

    1. 项目结构
      resources

      • deploy
        • env-dev.properties(开发环境)
        • env-prd.properties(生产环境)
        • env-sit.properties(测试环境)
      • properties
        • system.properties
    2. pom.xml 配置

      • profile配置

          <profiles>
          <profile>
              <id>dev</id>
              <properties>
                  <env>dev</env>
                  <!-- 指定连接文件 -->
                  <!--<exclude-config>config/spring-jdbc.xml</exclude-config>-->
              </properties>
              <!--默认dev环境-->
              <activation>
                  <activeByDefault>true</activeByDefault>
              </activation>
          </profile>
          <profile>
              <id>sit</id>
              <properties>
                  <env>sit</env>
              </properties>
          </profile>
          <profile>
              <id>prd</id>
              <properties>
                  <env>prd</env>
              </properties>
          </profile>
        
      • build 配置

          <build>
          <!--构建项目1:构建后的项目名称-->
          <finalName>${project.artifactId}-${project.version}</finalName>
          <!--构建项目2:引用环境隔离文件-->
          <filters>
              <filter>src/main/resources/deploy/env-${env}.properties</filter>
          </filters>
          <!--构建项目3:项目各文件加载路径-->
          <!-- filtering,构建过程中是否对资源进行过滤,默认false -->
          <!-- filters,给出对资源文件进行过滤的属性文件的路径,默认位于${basedir}/src/main/filters/目录下。属性文件中定义若干键值对。在构建过程中,对于资源文件中出现的变量(键),将使用属性文件中该键对应的值替换。 -->
          <resources>
              <resource>
                  <directory>src/main/java</directory>
                  <includes>
                      <include>**/*.xml</include>
                  </includes>
                  <excludes>
                      <exclude>**/*.java</exclude>
                  </excludes>
              </resource>
              <resource>
                  <directory>src/main/resources</directory>
                  <filtering>true</filtering>
                  <includes>
                      <include>**/*.properties</include>
                      <include>**/*.xml</include>
                  </includes>
                  <excludes>
                      <exclude>deploy/**</exclude>
                      <!--<exclude>${exclude-config}</exclude>-->
                  </excludes>
              </resource>
          </resources>
          <!--给出构建过程中所用到的插件-->
          <plugins>
              <!--编译java代码配置-->
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <version>3.1</version>
                  <configuration>
                      <source>${jdk.version}</source>
                      <target>${jdk.version}</target>
                      <encoding>${project.build.sourceEncoding}</encoding>
                      <showWarnings>${showWarnings}</showWarnings>
                      <!--<skip>${scom.suye.testtest}</skip>-->
                  </configuration>
              </plugin>
              <!--处理配置文件-->
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-resources-plugin</artifactId>
                  <version>2.5</version>
                  <configuration>
                      <encoding>${project.build.sourceEncoding}</encoding>
                  </configuration>
              </plugin>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <version>2.12.2</version>
                  <configuration>
                      <skip>${skip.testTmp}</skip>
                  </configuration>
              </plugin>
          </plugins>
        

    maven默认的输入输出目录(来源)###

    构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件。

    src/main/java和src/test/java 
    这两个目录中的所有*.java文件会分别在comile和test-comiple阶段被编译,编译结果分别放到了target/classes和targe/test-classes目录中,但是这两个目录中的其他文件都会被忽略掉。
    src/main/resouces和src/test/resources
    这两个目录中的文件也会分别被复制到target/classes和target/test-classes目录中。

    当是web项目时,会在target下生成myproject目录,myproject是你的项目名
    src/main/webapps
    这个目录中的文件会被复制到target/myProject目录中
    target/classes
    默认会把这个目录中的所有内容复制到target/myProject/WEB-INF/classes目录中
    Dependency
    默认会将项目的依赖复制到target/myProject/WEB-INF/lib

    maven生命周期(来源)###

    各个插件的执行顺序一般是:1:clean、2:resources、3:compile、4:testResources、5:testCompile、6:test、7:jar、8:install

    resource插件的功能就是把项目需要的配置文件拷贝到指定的目当,默认是拷贝srcmain esources目录下的件到classes目录下

    compile插件执行时先调用resouces插件,功能就是把srcmainjava源码编译成字节码生成class文件,并把编译好的class文件输出到targetclasses目录下

    单元测试所用的compile和resources插件和主代码是相同的,但执行的目标不行,目标estCompile和testResources是把src estjava下的代码编译成字节码输出到target est-classes,同时把src est esources下的配置文件拷贝到target est-classes。

    打包插件
    这个插件是把class文件、配置文件打成一个jar(war或其它格式)包。依赖包是不在jar里面的,需要建立lib目录,且jar和lib目录在同级目录。常用的打包插件有maven-jar-plugin、maven-assembly-plugin、maven-shade-plugin三种,下面分别介绍下各自己pom配置和使用特点。

    发布插件的功能就是把构建好的artifact部署到本地仓库,还有一个deploy插件是将构建好的artifact部署到远程仓库。

  • 相关阅读:
    LeetCode——Generate Parentheses
    LeetCode——Best Time to Buy and Sell Stock IV
    LeetCode——Best Time to Buy and Sell Stock III
    LeetCode——Best Time to Buy and Sell Stock
    LeetCode——Find Minimum in Rotated Sorted Array
    Mahout实现基于用户的协同过滤算法
    使用Java对文件进行解压缩
    LeetCode——Convert Sorted Array to Binary Search Tree
    LeetCode——Missing Number
    LeetCode——Integer to Roman
  • 原文地址:https://www.cnblogs.com/cuiyf/p/11099326.html
Copyright © 2011-2022 走看看