zoukankan      html  css  js  c++  java
  • Maven系列(一)plugin

    Maven系列(一)plugin

    maven-compiler-plugin

    使用 mvn compile 命令,出现错误: 编码 GBK 的不可映射字符而不能编译。这是因为代码或注释中存在中文引起的,一般在 IDE 中会自动处理编译时的字符集,就不会碰到这个错误。这个错误是在生成代码后,其中自动加上了中文注释,手动删除中文注释处理这个问题太麻烦。这个错误是在命令行执行编译命令才出现的,需要设置编译的字符集,设置方式是:

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId> 
        <configuration> 
            <source>1.7</source> 
            <target>1.7</target> 
            <encoding>UTF-8</encoding> 
        </configuration> 
    </plugin> 
    

    其中:

    • encoding 如果不设置的话会用本地操作系统的编码来编译文件

    maven-resources-plugin

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-resources-plugin</artifactId> 
        <version>2.3</version> 
        <configuration> 
            <encoding>UTF-8</encoding> 
        </configuration> 
    </plugin>
    

    其中:

    • encoding 设置资源文件的编码方式

    maven-dependency-plugin

    拷贝依赖包 mvn dependency:copy-dependencies,默认会拷到项目的 targetdependency 目录,想要复制到自定义的目录比如 target/lib 目录下,需要在 pom.xml 文件中添加设置覆盖默认设置:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <configuration>
            <outputDirectory>${project.build.directory}/lib</outputDirectory>
            <excludeTransitive>false</excludeTransitive>
            <stripVersion>true</stripVersion>
        </configuration>
    </plugin>
    

    其中:

    • outputDirectory ${project.build.directory}是maven变量,表示target目录。如果不写的话,将在根目录下创建 targetdependency 目录;
    • excludeTransitive 表示是否不包含间接依赖的包;
    • stripVersion 表示复制的jar文件去掉版本信息。

    如果需要在其他过程,比如 package 中加入 copy-dependencies,需要在该 plugin 标签中这样设置:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
            <execution>
                <id>copy-dependencies</id>
                <phase>package</phase>
                <goals>
                    <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                    <excludeTransitive>false</excludeTransitive>
                    <stripVersion>true</stripVersion>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    maven-jar-plugin

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
            <archive>
                <manifest>
                    <mainClass>com.github.binarylei.network.netty.helloworld.Server</mainClass>
                    <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
                    <useUniqueVersions>false</useUniqueVersions>
                    <addClasspath>true</addClasspath>
                    <classpathPrefix>lib/</classpathPrefix>
                </manifest>
            </archive>
        </configuration>
    </plugin>
    

    maven-javadoc-plugin

    通过 maven-javadoc-plugin 生产文档包插件

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.10.4</version>
        <configuration>  
            <aggregate>true</aggregate>  
        </configuration> 
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>jar</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    maven-source-plugin

    通过 maven-source-plugin 生产源码包插件

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.4</version>
        <configuration>  
            <attach>true</attach>  
        </configuration> 
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>jar-no-fork</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    tomcat7-maven-plugin

    tomcat7:run 本地运行项目

     <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <!--此端口表示本地项目运行的端口-->
            <port>9999</port>
            <!--利用tomcat manager部署-->
            <url>http://192.168.0.11:8080/manager/text/</url>
            <server>tomcat-deploy</server>
            <!--以下用户名和密码需要在tomca-user.xml文件中配置如下内容
            <role rolename="tomcat"/>  
            <role rolename="manager"/>      
            <role rolename="manager-script"/>  
            <role rolename="manager-status"/>  
            <role rolename="manager-jmx"/>      
            <role rolename="manager-gui"/>  
            <role rolename="admin"/>  
            <role rolename="admin-gui"/>   
            <user username="tomcat" password="tomcat" roles="admin,admin-gui,manager,manager-gui,manager-script,manager-status,manager-jmx"/>  
            第一次部署用tomcat7:deploy命令,前提是tomcat必须先启动,然后tomcat webapps目录下manager目录还在
            tomcat7:redeploy重新部署
            tomcat7:undeploy删除部署
            -->
            <username>tomcat</username>
            <password>tomcat</password>
            <!--项目部署访问路径-->
            <path>/${project.name}</path>
        </configuration>
    </plugin>
    

    jetty-maven-plugin

     <plugin>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>9.3.8.v20160314</version>
        <configuration>
            <webAppConfig>
                <!-- 指定 root context 在这里指定为${project.artifactId} 即 jetty, 那么访问时就用http://localized:8080/jetty 
                    访问, 如果指定梶为test 就用http://localized:8080/test访问,更多信息,请查看jetty 插件官方文档 -->
                <contextPath>/${project.name}</contextPath>
                <defaultsDescriptor>src/test/resources/webdefault.xml</defaultsDescriptor>
            </webAppConfig>
            <stopPort>9966</stopPort>
            <stopKey>stop</stopKey>
            <stopWait>10</stopWait>
            <scanIntervalSeconds>10</scanIntervalSeconds>
            <!-- 指定额外需要监控变化的文件或文件夹,主要用于热部署中的识别文件更新 -->
            <scanTargetPatterns>
                <scanTargetPattern>
                    <directory>src</directory>
                    <includes>
                        <!-- <include>*.java</include> <include>*.properties</include> -->
                        <include>*.html</include>
                        <include>*.js</include>
                        <include>*.css</include>
                    </includes>
                    <!-- <excludes> <exclude>**/*.xml</exclude> <exclude>**/myspecial.properties</exclude> 
                        </excludes> -->
                </scanTargetPattern>
            </scanTargetPatterns>
            <!-- 指定监控的扫描时间间隔,0为关闭jetty自身的热部署,主要是为了使用jrebel -->
            <!-- <scanIntervalSeconds>0</scanIntervalSeconds> -->
            <!-- 指定web页面的文件夹 -->
            <webAppSourceDirectory>${project.name}/src/main/webapp</webAppSourceDirectory>
        </configuration>
    </plugin>
    
  • 相关阅读:
    HashMap的负载因子为什么默认是0.75?这篇文章告诉你答案
    如何设计短网址系统?
    前端HTML史上最全总结,入门级边学边实战!
    阿里2021最全新的java面试题总结
    三万字,100题!Linux知识汇总!
    程序员路线图
    基于nodejs的selenium的自动化测试之网络元素
    Electron桌面程序入门研究
    Git常用命令
    二次探测法
  • 原文地址:https://www.cnblogs.com/binarylei/p/8628242.html
Copyright © 2011-2022 走看看