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

原文地址:https://www.cnblogs.com/flowerbirds/p/6268663.html