Java——maven打完jar包之后将jar包放到指定位置总结

简介: Java——maven打完jar包之后将jar包放到指定位置总结

先赞后看,此生必赚

前言

maven打完jar包之后,默认放置位置是target目录

有时候项目需要,如何将jar包放置到指定的目录呢?

方式一:通过maven-jar-plugin指定outputDirectory输出路径

可以排除某些配置文件,没有文件夹的话会自动创建!

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <!-- 指定打包的jar包输出路径 -->
    <outputDirectory>D:\test</outputDirectory>
    <!--不打入jar包的文件类型或者路径 -->
    <excludes>
      <exclude>**/*.properties</exclude>
      <exclude>**/*.xml</exclude>
      <exclude>**/*.yml</exclude>
      <exclude>static/**</exclude>
      <exclude>templates/**</exclude>
    </excludes>
  </configuration>
</plugin><

方式二:通过maven-resources-plugin指定outputDirectory输出路径

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <executions>
    <execution>
      <id>copy-resources</id>
      <phase>package</phase>
      <goals>
        <goal>copy-resources</goal>
      </goals>
      <configuration>
        <encoding>UTF-8</encoding>
        <!--打成jar包后复制到的路径 -->
        <outputDirectory>
          D:\test1
        </outputDirectory>
        <resources>
          <resource>
            <!--项目中的路径 -->
            <directory>src/main/resources/</directory>
          </resource>
        </resources>
      </configuration>
    </execution>
    <!--可配置多个提取复制路径只需要 “<id>”名字不一样即可 -->
    <execution>
      <id>copy-bulid</id>
      <phase>package</phase>
      <goals>
        <goal>copy-resources</goal>
      </goals>
      <configuration>
        <encoding>UTF-8</encoding>
        <outputDirectory>
          D:\test2
        </outputDirectory>
        <resources>
          <resource>
            <directory>target</directory>
          </resource>
        </resources>
      </configuration>
    </execution>
  </executions>
</plugin>


方式三:通过maven-antrun-plugin复制jar包

Maven已经成为Java 工业领域事实上的构建标准,但在某些情况下,如果可以用Ant命令,还是很方便的。借助 maven-antrun-plugin 插件,可以在Maven执行时,额外执行Ant脚本如下列配置所示:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.8</version>
  <executions>
    <execution>
      <id>install</id>
      <phase>install</phase>
      <configuration>
        <target>
          <echo message="*******************install*******************" />
          <mkdir dir="${basedir}/target/classes" />
          <copy todir="../target/commons" overwrite="true">
            <fileset dir="${project.build.directory}"
              erroronmissingdir="false">
              <include name="*.jar" />
            </fileset>
          </copy>
          <move file="${project.build.directory}/xxxxxxx.jar"
            tofile="${project.build.directory}/xxx.jar" />
        </target>
      </configuration>
      <goals>
        <goal>run</goal>
      </goals>
    </execution>
    <execution>
      <id>clean</id>
      <phase>clean</phase>
      <configuration>
        <target>
          <echo message="*******************clean*******************" />
          <delete dir="target" />
          <mkdir dir="${basedir}/target/classes" />
        </target>
      </configuration>
      <goals>
        <goal>run</goal>
      </goals>
    </execution>
  </executions>
</plugin><

<execution>是可执行命令,可以修改maven的命令执行过程,下面的两个execution是修改了install和clean;


<echo>是打印命令;


<mkdir>是创建文件夹命令;(文件夹里面没有东西时好像不会创建出来)


<copy>是复制命令,其中todir是目标文件夹,overwrite是覆盖旧文件,<fileset dir="xxxx">是源文件,<include>是包含jar包;


<move>是移动文件或者修改名称命令


<delete>是删除命令;


${basedir} 指的是 项目根路径

${project.build.directory} 指的是 target所在目录

${project.build.finalName} 指的是 jar包前缀名

方式四:通过maven-antrun-plugin嵌入build.xml文件

如下列配置所示:

将build.xml放到项目根路径下,使用<ant antfile="${basedir}/build.xml">嵌入build.xml文件即可。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.8</version>
  <executions>
    <execution>
      <id>install</id>
      <phase>install</phase>
      <configuration>
        <target>
          <property name="compile_classpath"
            refid="maven.compile.classpath" />
          <property name="runtime_classpath"
            refid="maven.runtime.classpath" />
          <property name="test_classpath"
            refid="maven.test.classpath" />
          <property name="plugin_classpath"
            refid="maven.plugin.classpath" />
          <ant antfile="${basedir}/build.xml">
            <target name="test" />
          </ant>
        </target>
      </configuration>
      <goals>
        <goal>run</goal>
      </goals>
    </execution>
  </executions>
</plugin>

方式五:使用distributionManagement设置存放路径

这种方式没有通过插件,而是直接配置distributionManagement

使用deploy命令可以部署到目标文件夹,没有文件夹的话会自动创建!

<distributionManagement>
  <repository>
    <id>localRepository</id>
    <url>file:D:/testRepository</url>
  </repository>
</distributionManagement>

扩展:使用maven-dependency-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>D:\test2</outputDirectory>
        <excludeTransitive>false</excludeTransitive>
        <stripVersion>false</stripVersion>
        <includeScope>runtime</includeScope>
      </configuration>
    </execution>
  </executions>
</plugin>

参考文献:


1.Referencing the Maven Classpaths


2.利用Maven插件将依赖包、jar/war包及配置文件输出到指定目录


3.maven-antrun-plugin的使用


4.centos7 搭建nexus 仓库配置和maven发布jar包到仓库


相关文章
|
3月前
|
安全 Java API
JAVA并发编程JUC包之CAS原理
在JDK 1.5之后,Java API引入了`java.util.concurrent`包(简称JUC包),提供了多种并发工具类,如原子类`AtomicXX`、线程池`Executors`、信号量`Semaphore`、阻塞队列等。这些工具类简化了并发编程的复杂度。原子类`Atomic`尤其重要,它提供了线程安全的变量更新方法,支持整型、长整型、布尔型、数组及对象属性的原子修改。结合`volatile`关键字,可以实现多线程环境下共享变量的安全修改。
|
18天前
|
Java Maven
maven打瘦包,且只打入部分想打入的依赖瘦包
maven打瘦包,且只打入部分想打入的依赖瘦包 设计 工程结构分析 环境管理 城市资源 安全工程 工程管理
44 10
|
15天前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
39 3
|
1月前
|
Java Maven Android开发
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
|
28天前
|
数据采集 分布式计算 Java
Kettle的Java开发环境需要什么jar包?
【10月更文挑战第24天】Kettle的Java开发环境需要什么jar包?
74 2
|
2月前
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
Java/Spring项目的包开头为什么是com?
|
20天前
|
Java 持续交付 项目管理
使用Maven进行项目管理:提高Java Web开发的效率
Maven 是一款强大的项目管理和构建自动化工具,广泛应用于Java社区。它通过依赖管理、构建生命周期管理、插件机制和多模块项目支持等功能,简化了项目的构建过程,提高了开发效率。本文将介绍Maven的核心功能及其在Java Web开发中的应用。
43 0
|
2月前
|
Java Shell Maven
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
112 4
|
2月前
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
938 1
|
3月前
|
Java API 数据处理
Java 包(package)的作用详解
在 Java 中,包(package)用于组织和管理类与接口,具有多项关键作用:1)系统化组织代码,便于理解和维护;2)提供命名空间,避免类名冲突;3)支持访问控制,如 public、protected、默认和 private,增强封装性;4)提升代码可维护性,实现模块化开发;5)简化导入机制,使代码更简洁;6)促进模块化编程,提高代码重用率;7)管理第三方库,避免命名冲突;8)支持 API 设计,便于功能调用;9)配合自动化构建工具,优化项目管理;10)促进团队协作,明确模块归属。合理运用包能显著提升代码质量和开发效率。

热门文章

最新文章

推荐镜像

更多
下一篇
无影云桌面