Maven 程序集创建带有依赖项和类路径的 jar

2024-03-28

我有一个 Maven 项目,有很多依赖项。 我想使用程序集插件将所有依赖项打包到一个 jar 中,但我不会将所有依赖项 jar 解压得一团糟。我希望它们全部进入 lib 文件夹,但我不知道如何添加类路径。 我的pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>test.com</groupId>
    <artifactId>simple-weather</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>simple-weather</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.5</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>

                     <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>

            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>adi.com.weather.Main</mainClass>
                    </manifest>
                </archive>
            </configuration>

        </plugin>

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>attached</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <descriptors>
                        <descriptor>package.xml</descriptor>
                    </descriptors>
                </configuration>

            </plugin>


        </plugins>
    </build>
</project>

我的汇编文件

<?xml version="1.0" encoding="UTF-8"?>
<assembly>
    <id>test5</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <unpack>false</unpack>
            <scope>runtime</scope>
            <outputDirectory>lib</outputDirectory>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <directory>${project.build.outputDirectory}</directory>
            <outputDirectory>/</outputDirectory>

        </fileSet>

    </fileSets>
</assembly>

他可能正在重新配置他的 Maven 依赖插件:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.10</version>
            <executions>
                <execution>
                    <id>copy</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${distDirectory}/lib</outputDirectory>
                        <includeScope>runtime</includeScope>
                    </configuration>
                </execution>
            </executions>
        </plugin>

现在,当你跑步时mvn package,你所有的依赖 jar 都会转到target/lib(或者无论你的 distDirectory 是什么)。

HTH

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

Maven 程序集创建带有依赖项和类路径的 jar 的相关文章

  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s

随机推荐

  • 数据集排序

    In DataTable我可以排序 dataTable DefaultView Sort SortField DESC 我得到了一个DataSet从数据库中 我想知道我可以对DataSet就像我做的那样DataTable 您仍然可以从数据集
  • 如何集成测试两个 Rails 应用程序

    我们有两个独立的 Ruby on Rails 应用程序 一个接受上传的文件 另一个根据另一个应用程序收到的上传生成文件 我们正在尝试整合端到端黑盒回归和集成测试 以证明当您将某个文件上传到第一个应用程序时 您可以指望从另一个应用程序中获取某
  • 为什么音频可视化直播无法在移动设备/Safari 上运行?

    我正在尝试基于 Three js 示例制作音频直播可视化工具 https trijs org examples q visua webaudio visualizer https threejs org examples q visua w
  • JSON回发到c# webmethod添加文字控制

    我正在学习 webmethods 并使用 JSON 发回给它们 我在下面得到了以下内容 但它说找不到 webmethod 404 不知道我哪里出错了 谢谢 在页面 JavaScript 中
  • 根据两列的值选择 pandas 数据框行

    我希望根据两列值选择一些特定行 例如 d user 1 2 3 4 item 5 6 7 8 f1 9 16 17 18 f2 4 5 6 5 f3 4 5 5 8 df pd DataFrame d print df Out f1 f2
  • 多个ViewModel之间的数据共享

    进一步我的问题如何绑定多个型号的 Bing 图钉 https stackoverflow com questions 7305582 how can i bind bing pushpins from multiple models 这对我
  • 如何获取组件中的列表值?

    例如 我导入了一个名为
  • PHP 7 - 不支持声明“strict_types”

    我在一个小项目中使用 PHP 7 也在我的本地和生产服务器中使用相同的配置 一切都在我的本地服务器上工作 但在完成 LAMP 设置后在生产服务器上我无法在 etc php 7 0 apache 下找到 apache 文件夹 所以我遇到了内部
  • 方括号多列 R

    我很困惑 我试图根据两列中的值隔离 df 的某些行 一如既往 我首先在实践数据中尝试这一点 我的代码工作正常 data1 lt df2 df2 fruit kiwi df2 fruit orange df2 fruit apple df2
  • 使用额外的命令从命令行启动 Android 活动 [重复]

    这个问题在这里已经有答案了 我创建了一个简单的活动 我想从命令行启动并从命令行传递一些值 但是 如果我尝试这样做 adb shell am start com example mike app SimpleActivity es Messa
  • android 画廊点击时没有滚动

    默认情况下 当单击图库项目时 图库会自动滚动到所单击的项目的中心 我怎样才能覆盖这种行为 我不希望图库在单击时滚动到中心 我希望它保持在原来的位置 我认为这是一个正确的解决方案 Override public boolean onSingl
  • 页面加载完成时打开 css 弹出窗口

    I have 纯CSS弹出窗口这个弹出窗口适用于单击按钮 但我需要在页面加载完成时弹出这个 div div class wrap a href modal one class btn btn big Modal a div div clas
  • 无法选择输入框中的文本

    我在表单上有以下用于浮动标签的 HTML CSS 抱歉 如果它有点混乱 box sizing border box html font 14px 1 4 Sans Serif form width 320px float left marg
  • C# 多线程:需要获取读锁吗?

    从多个线程读取变量之前是否需要获取变量的锁 简短的回答是 这取决于 长答案是 如果它不是共享值 即只有一个线程可以看到它 或使用它 则不需要任何同步 如果它是一个不可变的值 即您只设置一次 然后只读取一次 那么在没有同步的情况下这样做是安全
  • 如何排除嵌套复合聚合中的术语

    我在 elasticsearch 中的嵌套字段上使用复合聚合 但我想从结果中排除一些术语 此聚合正在运行 size 0 geo communication nested path geo aggs table composite size
  • 如何修复“android.os.NetworkOnMainThreadException”?

    我在运行 RssReader 的 Android 项目时遇到错误 Code URL url new URL urlToRssFeed SAXParserFactory factory SAXParserFactory newInstance
  • 如何让 jQuery Mobile 停止破坏 Ember.js 网站?

    我有一个用 Ember js 编写的网站 导航基于带有 符号的 url 我已经包含了 jQuery Mobile 我也有 jQuery 标准 jQuery 还可以 但是当我包含 jQuery Mobile 时 奇怪的事情发生了 符号从 UR
  • qtcreator - 未定义符号:sqlite3_column_table_name16

    我刚刚升级到 xubuntu 18 10 qt 不再为我工作 我已经删除并重新安装它 但没有帮助 我在终端上收到以下错误消息 显然某些 sqlite 依赖关系不正确 qtcreator qtcreator symbol lookup err
  • ASP.net MasterPage.master 不存在

    我在 IIS 服务器上发布我的网站时遇到问题 我无法直接访问它 因此我必须依靠其他人在 IIS 上配置我的网站 但是 当我上传我的网站时 出现此错误 Line 1 Line 2
  • Maven 程序集创建带有依赖项和类路径的 jar

    我有一个 Maven 项目 有很多依赖项 我想使用程序集插件将所有依赖项打包到一个 jar 中 但我不会将所有依赖项 jar 解压得一团糟 我希望它们全部进入 lib 文件夹 但我不知道如何添加类路径 我的pom