一些常用的Maven Plugin配置

2023-05-16

Maven是一个常用的Java build Manager, 使用Maven可以很好的对Java Project的dependency进行管理. 这里我记录几个比较常用的Plugin配置. 

  1. 生成JAR打包文件:
    <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifestEntries>
                                <Class-Path>.</Class-Path>
                            </manifestEntries>
                        </archive>
                        <excludes>
                            <exclude>*.xml</exclude>
                        </excludes>
                    </configuration>
                </plugin>


    这个打包文件将不会把一般的XML配置文件也打包, 这样, 我们可以在不修改JAR文件的情况下对配置文件进行修改.
  2. 拷贝XML配置文件:
    <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>copy-resources</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>target</outputDirectory>
                                <resources>
                                    <resource>
                                        <directory>src/main/resources</directory>
                                        <filtering>true</filtering>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    这个plugin配置将把在src/main/resources文件夹下的配置文件都拷贝到target文件夹. 这种文件夹配置是IntelliJ下的默认配制.
  3. 拷贝所有的Dependency JARs:
    <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>target/libs</outputDirectory>
                                <overWriteReleases>false</overWriteReleases>
                                <overWriteSnapshots>false</overWriteSnapshots>
                                <overWriteIfNewer>true</overWriteIfNewer>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    这个plugin将拷贝所有的Dependency JARs到target/libs文件夹下, 这样只要添加这个目录到classpath下, 我们就可以在没有IDE的环境的情况下直接运行我们的程序. 
  4. 生成运行文件:
    <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>manifest</id>
                            <phase>package</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <tasks>
                                    <echo file="target/runjetty.sh">
                                        java -cp "libs/*:jettysetup-1.0-SNAPSHOT.jar" weblog.examples.jettysetup.JettyLauncher
                                    </echo>
                                </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    通过这个plugin配置, 我们将在target文件夹下生成一个叫runjetty.sh的文件来设置我们的classpath, 这样我们就可以通过这个脚本直接运行我们的程序了. 上面的这个例子是我在另一篇配置Jetty环境的文章中使用的, 整个的pom.xml配置文件可以在Github上找到.

通过上面的4个简单的配置, 我们可以实现对我们的项目进行打包, 同时拷贝配置文件, 和Dependency JAR文件, 生成执行脚本, 这个打包有几个优势:

  1. 打包文件不包含配置文件, 这样我们可以很方便得对配置文件进行修改
  2. 打包文件不包含Dependency JARs, 由于这些JAR并没有打包在我们的project jar文件里, 当我们有多个项目打包文件的时候, 这些JAR将会被共享.
当然, Maven并不是我们可以用的唯一一个build management tool, 我们还可以使用Ant, Ivy或者最近很流行的Gradle.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一些常用的Maven Plugin配置 的相关文章

随机推荐

  • 看了我的 RPC 实战,同事拍案叫绝

    1 RPC 1 1 什么是 RPC xff1f RPC xff08 Remote Procedure Call Protocol xff09 远程过程调用协议 xff0c 目标就是让远程服务调用更加简单 透明 RPC 框架负责屏蔽底层的传输
  • 无人机姿态表示方法及相互转换(欧拉角、方向余弦矩阵、四元数)

    常用的姿态表示方法有欧拉角 方向余弦矩阵 四元数这几种 欧拉角表示方法采用来表示飞行器的姿态 xff0c 其中为滚转角 xff0c 为俯仰角和为航向角 xff0c 表示飞行器首先航向偏转角度 xff0c 再俯仰角度 xff0c 然后机体滚转
  • 无人飞行器数学模型

    这里是运动学和动力学模型 xff0c 也适用于任何其它类型的飞行器 xff0c 乃至无人车等各种载体 飞行器的状态包括位置 xff0c 速度 xff0c 姿态角度 xff0c 角速度 xff0c 姿态也可以用坐标转换矩阵来表示 xff0c
  • 无人飞行器的控制

    飞行器的控制通过几个环来实现 xff0c 外环控制为位置的控制 xff0c 内环控制为姿态的控制 xff0c 通过姿态的控制来实现飞行器的动态控制 xff0c 从而控制飞行器的速度和位置 xff0c 大致框架如下 位置控制根据目标位置得出飞
  • ROS目录结构

    参考 xff1a https zhuanlan zhihu com p 139405796 ROS项目通常组织在一个catkin的workspace下面 xff0c 里面包含典型的文件和目录 xff0c 如下 如上图所示 xff0c 首先是
  • 二、编译PX4飞控的Bootloader

    二 编译PX4飞控的Bootloader 环境 xff1a Ubuntu 14 04 LTS 声明 xff1a 本人用的是window安装VMware虚拟机 xff0c 然后安装ubuntu 步骤 xff1a 1 先安装GCC环境变量 这里
  • Jetson nano 使用笔记(二):系统备份与恢复

    本文参考了网友 企鹅的外层世界 的文章https blog csdn net lianbus article details 104733412 xff0c 在其基础上添加了部分说明 配置好系统和TensorFlow等运行环境后 xff0c
  • 嵌入式软件工程师(6-15k)笔试面试经验分享(应届毕业生)

    先看一下工资情况 xff1a 一 笔试部分 xff08 一 xff09 技术测试题 xff08 拍了部分内容 xff09 xff08 二 xff09 人格测试题 二 面试部分 xff08 一 xff09 技术面试题 面试百问 xff1a 问
  • 2021-02-13

    昨天学习了关于位运算的一些常识 xff0c 自己也跟着视频敲了一些位运算代码如下 xff1a package com raisecom tiap ems basic mgt domain acl import java util Array
  • 字符串匹配中KMP算法的next数组构造与思考

    对于KMP算法的next算法 xff0c 匹配规则i不动 xff0c j而是根据 next j 61 k 如果在j位置失配 xff0c 则退到k位置 构造next数组的 是根据前缀与后缀的最长匹配 如ababaa 的next数组是 1001
  • x86_64架构的VINS-fusion-GPU部署

    x86 64架构的VINS fusion GPU部署 1 环境配置 xff08 Ubuntu 18 04 xff09 xff08 0 xff09 CUDA 10 2 安装 由于笔记本的GPU太老 xff08 GeForce 840M xff
  • 字符串匹配的后缀数组的直接比较和利用rank[i]=k的倍增法

    public static Suff getSa String s Suff SuffArrays 61 new Suff s length sa i 61 k表明的排名为i的后缀是从k开始的 for int i 61 0 i lt s l
  • 关于求后缀数组的公共前缀的长度height数组求法思路与代码

    字符串匹配之后缀数组 概念 xff1a 后缀数组 xff1a 是所有后缀按字典排序后 xff0c 数组中记录的起始下标 sa 0 61 5 起始下标为5的后缀 在所有后缀中字典最小 rank数组 xff1a 是给定后缀下标 xff0c 返回
  • Excel 2013 Power Programming with VBA 翻译

    第14 章 xff1a 基于VBA开发的Excel实用工具 545页 是什么让它成为一个优秀的工具 xff1f Excel工具 xff0c 理所应当的让你的工作变得更容易或者更有效 但是 如果你正在为其他用户开发一个实用工具 xff0c 你
  • 回首13我们奋斗在14的路上

    xfeff xfeff 晓松老师说 xff1a 2013世界依旧很大 xff0c 大到可以晓说 的确 xff0c 猛然间的细数2013的点点滴滴 xff0c 发现它还可以 大到我们去回味 2013的我也失败过 xff0c 学习过 xff0c
  • myeclipse中编写小java项目遇到的一些问题(持续更新)

    刚开始学习java程序 xff0c 读了 lt lt thingking in java gt gt 刚开始编写正常 xff0c 可后来再次打开时看到所创建的java项目都会出现红色叉号 后来搜了一会儿却还是什么感觉很乱 xff0c 最好也
  • IT成长录

    少壮不努力 xff0c 老大学IT xff0c 初次听到这句话是我大学老师在一次上课时看到满班乱哄哄的气氛说的 xff0c 当时以为他是嘲讽我们或者是略微自嘲呢 xff0c 现在回想起来有些不一样的感觉 从自己第一份接触IT工作 xff08
  • 我所了解的大数据

    大数据如今越来越热 xff0c 数据量再大不会用 xff0c 放到那里也是存储垃圾 所以随着数据量的越来越大 xff0c 对数据的各种处理和挖掘需求也很多 这就促进分布式存储和计算软件的快速发展 xff0c 集群的规模也越来越大 从以前的某
  • 通过Jetty搭建一个简单的Servlet运行环境

    最近在做一些简单的Servlet开发的时候 感觉每次调试的时候都要发布到tomcat上很麻烦 把程序共享给同事也很麻烦 需要帮他设置本地的tomcat环境 在网上找了找其他的Servlet运行环境 发现用Jetty可以很方便的实现嵌入式We
  • 一些常用的Maven Plugin配置

    Maven是一个常用的Java build Manager 使用Maven可以很好的对Java Project的dependency进行管理 这里我记录几个比较常用的Plugin配置 生成JAR打包文件 lt plugin gt lt gr