zoukankan      html  css  js  c++  java
  • maven profiles、filters、resources学习笔记 及 常用 plugin demo

    这里只记了学习以下博客后,自己做的一个总结。

    来源:http://blog.csdn.net/fengchao2016/article/details/72726101

    profiles定义了一些不同类型的变量,在这些变量中处于激活状态的才会被真正使用,填充到resources指定的文件中的${},或者filter中书写的路径的${} 里去。

    filters定义了一些过滤规则,就是一些文件路径,其下的filter写什么那么就保留什么,剩余的就会被忽视

    resources定义了一些目录,也就是被过滤的目录

    以上三者共同定义了那些文件需要发布到编译目标目录下,以及文件中的${}的内容应该替换成什么

    其它参考:http://jjhpeopl.iteye.com/blog/2325375

    最后奉上一个自己做的测试maven pom的项目,pom里面加了一些常见的maven plugin,并且有详细注释内容如下:

     里面就3个文件:

    Main.java

    package com.liuyx;
    
    import java.util.List;
    
    import com.google.common.collect.Lists;
    
    public class Main {
    
        
        public Main() {
            List<String> l = Lists.newArrayList("hello");
            for(String s:l) {
                System.out.println(s);
            }
            
        }
    }

    config.properties

    ${a}:${b}

    pom.xml

    <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>
      <groupId>com.test.maven</groupId>
      <artifactId>testMaven</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>17.0</version>
            </dependency>
        </dependencies>
      
      <profiles>
          <!-- mvn help:active-profiles 查询当前激活的profile -->
          <!-- 1、手动激活,直接使用命令指定id mvn package -P test -->
          <profile>
              <id>test</id>
              <properties>
                  <!-- 这两个可以替换config.properties中的内容 -->
                  <a>key-test</a>
                  <b>value-test</b>
                  <config.name>config.properties</config.name><!-- 这个可以替换filter中的内容 -->
              </properties>
              <activation>
                  <!-- 设为默认激活,不设置则默认激活的id为dev -->
                  <activeByDefault>true</activeByDefault>
              </activation>
          </profile>
          <profile>
              <id>byfile</id>
              <properties>
                  <a>key-file</a>
                  <b>value-file</b>
              </properties>
              <activation>
                  <!-- 2、根据文件存在来决定是否激活  -->
                  <file>
                      <exists>config-file.properties</exists>
                  </file>
              </activation>
          </profile>
          <profile>
              <id>byjdk</id>
              <properties>
                  <a>key-jdk</a>
                  <b>value-jdk</b>
              </properties>
              <activation>
                  <!-- 3、根据jdk环境来决定是否激活 -->
                  <jdk>1.9</jdk>
              </activation>
          </profile>
          <profile>
              <id>byos</id>
              <properties>
                  <a>key-os</a>
                  <b>value-os</b>
              </properties>
              <activation>
                  <!-- 4、根据操作系统环境来决定是否激活 -->
                <os>
                    <name>Windows XP</name>
                    <family>Windows</family>
                    <arch>x86</arch>
                    <version>5.1.2600</version>
                </os>
              </activation>
          </profile>
      </profiles>
      
      <build>
          <!-- 编译后的jar包名称 -->
          <finalName>one-maven-test</finalName>
    
        <filters> <!-- 指定 filter内容,用来过滤resource下的内容 -->
            <filter>src/main/resources/${config.name}</filter>
        </filters>
          
          <resources>
              <resource>
                <directory>${project.basedir}/src/main/resources</directory>
                <!-- 设为true则用上激活的profile -->
                <filtering>true</filtering>
                <includes>
                    <include>**/*.properties</include>
                </includes>
                <targetPath>${project.build.directory}/config</targetPath>
            </resource>
          </resources>
          
          <!-- 几个常用插件,更多插件请自行搜索 maven plugin -->
          <plugins>
              <!-- 编译插件,一般用于指定使用的java版本,不过也可以直接在properties中配置
              <properties>
                    <maven.compiler.target>1.8</maven.compiler.target>
                    <maven.compiler.source>1.8</maven.compiler.source>
                    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
             </properties>
               -->
              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            
            <!-- 用来复制依赖的jar包到指定目录 -->
             <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>copy-dependencies</id>
                            <phase>package</phase>
                            <configuration>
                                <overWriteReleases>false</overWriteReleases>
                                <overWriteSnapshots>false</overWriteSnapshots>
                                <overWriteIfNewer>true</overWriteIfNewer>
                                <outputDirectory>
                                    ${project.build.directory}/lib
                                </outputDirectory>
                            </configuration>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                
                <!-- 打成jar包时用来指定MANIFEST.MF文件中的Main class和classpath mainfest等内容 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                        <archive>
                            <!-- 是否增加maven描述信息 -->
                            <addMavenDescriptor>false</addMavenDescriptor>
                            
                            <!-- 批量处理 -->
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <classpathPrefix>lib/</classpathPrefix>
                                <mainClass>com.liuyx.Main</mainClass>
                                <!-- Implementation:实现 -->
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                                <!-- Specification:规格说明书 -->
                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            </manifest>
                            <!-- 部分内容无法批量处理,手动添加,这里把.和libs/都添加到了 classpath中  -->
                            <manifestEntries>
                                <Class-Path>.</Class-Path>
                                <Class-Path>libs/</Class-Path>
                                <Permissions>${Permissions}</Permissions>
                                <Caller-Allowable-Codebase>${Caller-Allowable-Codebase}</Caller-Allowable-Codebase>
                            </manifestEntries>
                        </archive>
                    </configuration>
                </plugin>
          </plugins>
      </build>
    </project>
  • 相关阅读:
    Vue表单输入绑定(文本框和复选框)
    Vue登录方式的切换
    IDEA导包(以junit为例)
    反射相关类
    dom4j加载xml文件
    Vue购物车
    IDEA基本设置和快捷键大全
    react组件间的通信-父子通信,子父通信,兄弟通信
    react受控组件
    react中数据承载--props和state用法
  • 原文地址:https://www.cnblogs.com/flying607/p/7518478.html
Copyright © 2011-2022 走看看