美文网首页
Maven插件的应用

Maven插件的应用

作者: 年少时难免轻狂Ho | 来源:发表于2018-07-17 11:30 被阅读0次

    Maven工程的标准架构

    目录 备注
    ${basedir} 存放 pom.xml和所有的子目录
    ${basedir}/src/main/resources 项目的资源,如spring配置文件,properties 资源文件等
    ${basedir}/src/main/webapps web项目特有
    ${basedir}/src/test/java 项目的测试类,比如说 JUnit代码、TestNg代码
    ${basedir}/src/test/resources 测试代码使用的资源
    • 插件一 maven-resources-plugin

    Maven可以区别对待Java代码文件和资源文件,默认的主资源文件目录是src/main/resources,我们可以通过这个插件实现资源文件过滤。资源文件过滤的意思是指我们可以在资源文件里用使用占位符${propertyName},然后开启对资源文件的过滤,pom.xml里再统一设置所有{propertyName}对应的值,就可以在构建过程中将值替换掉资源文件中对应的${propertyName},实现了代码配置分离、做到了参数的统一维护

    示例用法

    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>properties/*.properties</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>*.xml</include>
                <include>mapper/**/*.xml</include>
                <include>mysqlMapper/**/*.xml</include>
                <include>*.properties</include>
            </includes>
        </resource>
    </resources>
    <properties>
        <runtime.env>local</runtime.env>
    </properties>
    

    我们的主应用集成后,会根据实际要求部署到不同的环境中,比如联调环境、测试环境、压力环境、预发布环境、生产环境等,而这些环境上的资源配置信息显然是不一样的,针对每套环境,每个具体占位符${propertyName}都会有不同的值,而这种场景可以使用Maven的profile来支持,每个profile都可以独立维护一套参数值,在mvn package的时候灵活指定;此外,maven也支持在package的时候指定多个profile,这个特性在执行自动部署的时候特别有用。使用这个插件,我们的项目可以做到多环境支持,参考命令

    mvn package -Pnocheck,env-test 
    

    示例用法

    <profiles>
        <profile>
            <id>nocheck</id>
            <properties>
                <skipTests>true</skipTests>
                <checkstyle.skip>true</checkstyle.skip>
                <license.skip>true</license.skip>
                <notice.skip>true</notice.skip>
                <versions.skip>true</versions.skip>
            </properties>
        </profile>
        <profile>
            <!-- 本地环境,默认是windows -->
            <id>local</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <runtime.env>local</runtime.env>
            </properties>
        </profile>
        <profile>
            <id>env-test</id>
            <properties>
                <runtime.env>env-test</runtime.env>
            </properties>
        </profile>
    </profiles>
    
    • 插件二 maven-jar-plugin

    当我们将项目模块化后,有一些通用的资源文件基本上大多数模块都会用到,比如log4j.properties,jdbc.properties等,模块中有了这些资源文件,我们才能单独对该模块进行开发、调试。默认情况下maven-jar-plugin会将这些资源文件全部package成一个jar包进行发布,如果这样的jar包集成到一个主应用中部署,运行,很可能导致主应用的配置不生效,我称之为配置混乱,为了解决这个问题,可以开启maven-jar-plugin的排除功能,在执行mvn package之前排除指定的资源文件。

    示例用法

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
            <excludes>
                <exclude>applicationContext.xml</exclude>
                <exclude>properties/**</exclude>
                <exclude>log4j.properties</exclude>
            </excludes>
        </configuration>
    </plugin>
    
    • 插件三 maven-war-plugin

    项目如果是web主应用,我们可以使用maven-war-plugin来对webapps下各类文件进行过滤。用法参考maven-resources-plugin

    示例用法

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
            <warName>demo-Rest</warName>
            <webResources>
                <resource>
                    <directory>src/main/webapp/WEB-INF</directory>
                    <filtering>true</filtering>
                    <targetPath>WEB-INF</targetPath>
                    <includes>
                        <include>web.xml</include>
                    </includes>
                </resource>
            </webResources>
        </configuration>
    </plugin>
    
    • 插件四 properties-maven-plugin

    • 插件五 maven-assembly-plugin

    • 插件六 maven-shade-plugin

    • 插件七 versions-maven-plugin

    https://blog.csdn.net/enweitech/article/details/67631997

    相关文章

      网友评论

          本文标题:Maven插件的应用

          本文链接:https://www.haomeiwen.com/subject/diswpftx.html