zoukankan      html  css  js  c++  java
  • Maven 复制jar到指定目录

      在完成模块开发后,需要发布jar到nexus上,与此同时,则要部署开发的模块,需要将编译打包的jar复制到指定的路径,再进行部署,而不是手动的去复制那些jar,因为当模块多的话,则会感到特别的烦,所以,利用maven集成的ant来进行这些操作。pom.xml文件配置如下:

      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <target.dir>F:生产发布包发布包</target.dir>
        <target.version>2.1.4-1.0-RELEASE</target.version>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
       <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.3</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                    </configuration>
                </plugin>
                 <plugin>  
                    <artifactId>maven-source-plugin</artifactId>  
                    <version>2.1</version>  
                    <configuration>  
                        <attach>true</attach>  
                    </configuration>  
                    <executions>  
                        <execution>  
                            <phase>package</phase>  
                            <goals>  
                                <goal>jar</goal>  
                            </goals>  
                        </execution>  
                    </executions>  
                </plugin>
                <plugin>   
                 <artifactId>maven-antrun-plugin</artifactId>    
                 <executions>       
                    <execution>         
                       <phase>package</phase>        
                       <goals>            
                             <goal>run</goal>        
                       </goals>             
                       <configuration>       
                         <tasks>
                             <mkdir dir="${target.dir}/${target.version}"/>        
                            <copy todir="${target.dir}/${target.version}" overwrite="true" > 
                                <fileset dir="${project.build.directory}" erroronmissingdir="false">
                                    <include name="*.jar"/>
                                </fileset>
                             </copy>     
                         </tasks>        
                       </configuration>        
                    </execution>    
                 </executions>  
                </plugin>   
            </plugins>
        </build>
        <distributionManagement>
            <snapshotRepository>
                <id>snapshots</id>
                <name>meis</name>
                <url>http://191.168.2.1:8081/repository/maven-snapshots/</url>
                <uniqueVersion>true</uniqueVersion>
            </snapshotRepository>
            <repository>
                <id>releases</id>
                <name>meis</name>
                <url>http://191.168.2.1:8081/repository/maven-releases/</url>
            </repository>
        </distributionManagement>    

    其中,plugin的artifactId为maven-antrun-plugin的就是Ant插件,tasks的内容可参考Ant的帮助文档,查阅 Ant Tasks;plugin的artifactId为maven-source-plugin的则表示在打包的时候同时打包源码,编译后的jar和源码jar都会被上传至nexus上面;关于nexus的登录名和密码,需要在maven的setting.xml中配置:

        <server>
            <id>releases</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
        <server>
            <id>snapshots</id>
            <username>admin</username>
            <password>admin123</password>
        </server>

    需要注意id保持一致;

    关于上面copy任务的解说:

    1.mkdir为创建对应的文件夹,如已存在则忽略;

    2.copy的todir为复制文件的目的地,overwrite为强制覆盖,默认为false;

    3.fileset为文件集,dir为目录,${project.build.directory}指的是当前构建路劲,指的是 项目/target 目录,erroronmissingdir为false指的是当目录不存在时忽略掉,默认为抛出异常;

    4.include表示文件包含*.jar的文件,指复制*.jar文件,编译的jar和源码jar;

    复制任务需设置phase为package,否则jar没有打包就会执行复制任务。

    右键运行(Run As)--》Maven build...--》在Goals中输入命令clean deploy,点击Run,则会进行打包,此时可查看控制台信息。

    如需重复部署(deploy),则需设置nexus上面release Repository的policy为Allow redeploy

  • 相关阅读:
    java Math类
    JAVA Date类与Calendar类【转】
    java Runtime类
    Java System类
    java 多线程
    java 包
    Java 内部类
    java 抽象类 以及模块方法设计模式,接口
    java 单例模式
    java 关于Java中静态代码块以及构造函数的执行先后顺序
  • 原文地址:https://www.cnblogs.com/flowerbirds/p/6268663.html
Copyright © 2011-2022 走看看