Maven 复制jar到指定目录

╰+哭是因爲堅強的太久メ 2022-04-22 12:26 384阅读 0赞

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

复制代码

  1. <properties>
  2. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  3. <target.dir>F:\生产发布包\发布包</target.dir>
  4. <target.version>2.1.4-1.0-RELEASE</target.version>
  5. </properties>
  6. <dependencies>
  7. <dependency>
  8. <groupId>junit</groupId>
  9. <artifactId>junit</artifactId>
  10. <version>3.8.1</version>
  11. <scope>test</scope>
  12. </dependency>
  13. </dependencies>
  14. <build>
  15. <plugins>
  16. <plugin>
  17. <groupId>org.apache.maven.plugins</groupId>
  18. <artifactId>maven-compiler-plugin</artifactId>
  19. <version>3.3</version>
  20. <configuration>
  21. <source>1.7</source>
  22. <target>1.7</target>
  23. </configuration>
  24. </plugin>
  25. <plugin>
  26. <artifactId>maven-source-plugin</artifactId>
  27. <version>2.1</version>
  28. <configuration>
  29. <attach>true</attach>
  30. </configuration>
  31. <executions>
  32. <execution>
  33. <phase>package</phase>
  34. <goals>
  35. <goal>jar</goal>
  36. </goals>
  37. </execution>
  38. </executions>
  39. </plugin>
  40. <plugin>
  41. <artifactId>maven-antrun-plugin</artifactId>
  42. <executions>
  43. <execution>
  44. <phase>package</phase>
  45. <goals>
  46. <goal>run</goal>
  47. </goals>
  48. <configuration>
  49. <tasks>
  50. <mkdir dir="${target.dir}/${target.version}"/>
  51. <copy todir="${target.dir}/${target.version}" overwrite="true" >
  52. <fileset dir="${project.build.directory}" erroronmissingdir="false">
  53. <include name="*.jar"/>
  54. </fileset>
  55. </copy>
  56. </tasks>
  57. </configuration>
  58. </execution>
  59. </executions>
  60. </plugin>
  61. </plugins>
  62. </build>
  63. <distributionManagement>
  64. <snapshotRepository>
  65. <id>snapshots</id>
  66. <name>meis</name>
  67. <url>http://191.168.2.1:8081/repository/maven-snapshots/</url>
  68. <uniqueVersion>true</uniqueVersion>
  69. </snapshotRepository>
  70. <repository>
  71. <id>releases</id>
  72. <name>meis</name>
  73. <url>http://191.168.2.1:8081/repository/maven-releases/</url>
  74. </repository>
  75. </distributionManagement>

复制代码

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

复制代码

  1. <server>
  2. <id>releases</id>
  3. <username>admin</username>
  4. <password>admin123</password>
  5. </server>
  6. <server>
  7. <id>snapshots</id>
  8. <username>admin</username>
  9. <password>admin123</password>
  10. </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,则会进行打包,此时可查看控制台信息。

1089791-20170110111151603-274126761.png

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

1089791-20170110111342853-447706120.png

发表评论

表情:
评论列表 (有 0 条评论,384人围观)

还没有评论,来说两句吧...

相关阅读

    相关 maven下载jar指定位置

    maven的主要工作:将远程仓库的jar包下载到本地仓库,第二次需要jar包时不再从远程仓库下载,因为在本地仓库了,可以将本地仓库理解为缓存。 本地仓库由于网络问题再中央仓库