使用 Maven 将 Dll 打包在 Jar 中 - 单一目标

2023-11-21

我在我的 Maven 项目中添加了一个 DLL 作为依赖项,如下所示:

<dependency>
  <groupId>com.test.dll</groupId>
  <artifactId>myDll</artifactId>
  <version>0.1</version>
  <type>dll</type>
</dependency>

当我尝试执行时maven:install

它给了我这个错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2-   
beta-5:single (jar-with-dependencies) on project testApp: Failed to create 
assembly:    Error adding file-set for 'com.test.dll:myDll:dll:0.1' to archive: Error 
 adding archived file-set. PlexusIoResourceCollection not found for: C:\Users\USER\.m2
 \repository\com\test\dll\myDll\0.1\myDll-0.1.dll: No such archiver: 'dll'

我在这里做错了什么?

Update

 <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>   
        <executions>
        <execution>
        <goals>
            <goal>sign</goal>
        </goals>
        </execution>
       </executions>
       <configuration>
        <keystore>src/main/keystore/mykey.keystore</keystore>
        <alias>aliasname</alias>
        <storepass>passw0rd</storepass>                  
        <verify>true</verify>

    </configuration>        
    </plugin>               
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>      
        <executions>
            <execution>
                <id>jar-with-dependencies</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>single</goal>
                </goals>       
            <configuration>
            <archive>
                <manifest>

                </manifest>
            </archive>              
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>           
            <appendAssemblyId>false</appendAssemblyId>
        </configuration>
    </execution>     
  </executions>      
  </plugin>   
 </plugins> 

这里的问题是jar-with-dependencies描述符。描述符unpacks将所有依赖项放入一个目录中,并将该目录打包成一个新的 JAR 文件。但是,它无法解压 DLL 文件(即“No such archiver”错误消息)。要使其正常工作,您需要定义自己的程序集描述符:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

  <id>assembly-with-dll</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <!-- package the regular dependencies -->
    <dependencySet>
      <outputDirectory>/</outputDirectory>
      <useProjectArtifact>true</useProjectArtifact>
      <unpack>true</unpack>
      <scope>runtime</scope>
      <!-- exclude the DLL -->
      <excludes>
        <exclude>com.example:my-dll</exclude>
      </excludes>
    </dependencySet>
    <!-- package the DLLs -->
    <dependencySet>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>com.example:my-dll</include>
      </includes>
    </dependencySet>
  </dependencySets>
</assembly>

假设上面的描述符位于src/main/assembly,maven- assembly-plugin 的配置如下所示:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-assembly-plugin</artifactId>
      <executions>
        <execution>
          <id>jar-with-dependencies</id>
          <phase>prepare-package</phase>
          <goals>
            <goal>single</goal>
          </goals>
          <configuration>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
            <appendAssemblyId>false</appendAssemblyId>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Maven 将 Dll 打包在 Jar 中 - 单一目标 的相关文章

随机推荐

  • 读取文件直到Python中的特定字符

    我目前正在开发一个应用程序 该应用程序需要从文件中读取所有输入 直到遇到某个字符 通过使用代码 file open Questions txt r c file readlines c x strip for x in c 每次脱衣相遇 n
  • 从不同的基类重载同名的虚函数。是否可以? [复制]

    这个问题在这里已经有答案了 标题可能令人困惑 假设我们有以下设置 class A public virtual void fn 0 class B public virtual int fn class C public A public
  • R 创建包含每行最大值的列名的列

    我和这个问题有同样的要求 对于每一行返回最大值的列名 但是 我需要包含每行最大值的所有列的名称 如果我每行有两个相同的最大值 上面链接中提供的所有解决方案都会出现问题 df lt data frame V1 c 2 8 1 5 6 V2 c
  • 如何使用 c-ares 将 IP 解析为主机?

    这就是我到目前为止所做的 它可以编译 但当我尝试运行它时会出现段错误 include
  • 如何处理您想要扩展的密封在 .NET 库中的类?

    我正在阅读有关如何处理想要扩展 NET Framework 库中的密封类的问题的文章 这通常是一项常见且有用的任务 因此我开始思考 在这种情况下 有哪些解决方案 我相信在我读过的文章中演示了一种扩展密封类的 方法 但我现在不记得了 它不是扩
  • 如何获取通用 Windows 批处理文件时间戳

    我在 Windows 批处理文件中生成时间戳时遇到问题 因为我在不同的 Windows 版本上得到不同的日期格式 我的机器 gt echo date gt Tue 11 17 2009 友机 gt echo date gt 11 17 20
  • 如何使用 .bat 文件从 PATH 环境变量中删除特定标记?

    我正在编写卸载脚本 因此我想 撤消 安装对系统所做的修改 为了实现这个目标 我想解析PATH变量 并删除安装添加到的任何值PATH 为此 我开发了以下伪代码 保存内容PATH到临时变量 拆分PATH转换为令牌 使用 字符作为分隔符 并循环遍
  • 将表转换为分层字典?

    我有一个表格 A1 B1 C1 value A1 B1 C1 value A1 B1 C2 value A1 B2 C1 value A1 B2 C1 value A1 B2 C2 value A1 B2 C2 value A2 B1 C1
  • 瘦服务器:将 Rails 应用程序日志输出到控制台,如“rails s”那样

    我需要跑thin start or thin ssl start在我的 Rails 应用程序的根目录中 并查看输出到控制台的应用程序日志 类似于rails s does In config ru文件 位于应用程序的根目录 在该行之前添加以下
  • 授予 Node.js 访问证书/私钥的权限

    我正在尝试在我的 Node js 应用程序上使用 HTTPS 就像它已针对其他任何内容启用一样 我已经安装了密钥和证书 但我得到了Error EACCES permission denied当我试图在应用程序上指向它们时 密钥和证书都位于以
  • 是否可以保证 memset 将结构中的填充位清零?

    一般来说 根据 C 标准 是否可以保证带有 0 的 memset 会将 C 结构中的填充位清零 海湾合作委员会呢 例如 类似 struct MyStruct unsigned char member1 unsigned int member
  • 在 viewpager 中显示 Youtube 视频

    我想设置YouTube内的视频ViewPager 为此我设置了FrameLayout在适配器中 我在其中设置了 YoutubeVideoFragment 如下所示 我的 ViewPager 适配器 import android app Ac
  • 在 Go 中使用匿名成员扁平化编组 JSON 结构

    给出以下代码 转载于此处play golang org package main import encoding json fmt type User struct Id int json id Name string json name
  • 在 ggplot 中使用多个尺寸比例

    我正在尝试构建一个显示从一个类到另一个类的转换的图 我想要有代表根据类属性调整大小的每个类的圆圈 以及根据从一个类到另一个类的转换数量从一个类到另一个类的箭头 举个例子 library ggplot2 points lt data fram
  • php - 如何检索 div 标签属性值

    我有一个可以隐藏或不隐藏的 div 具体取决于用户 该 div 有一个名为 attrLoc 的属性 我想要的是能够从 php ini 检索该属性值 希望有人能帮忙 预先感谢您的回复 干杯 马克 My HTML div class hidde
  • 在行内行块下方添加一个 div

    我有一个内联块元素列表 它们换行形成几行 我想在行之间显示一个 div 元素 具体取决于特定元素所在的位置 例如 前几行已编号 如果我想定位第三个元素并显示全长元素 包含块的 div 的 100 那么它将如下所示 对于任何块 1 5 全长
  • 如何将地图转换为 url 查询字符串?

    您是否知道任何实用程序类 库可以将 Map 转换为 URL 友好的查询字符串 Example 我有一张地图 param1 12 param2 cat 我想得到 param1 12 param2 cat 最终输出 relativeUrl pa
  • java和javaw的区别

    我搜索以了解之间的区别java exe and javaw exe 我通读了Java exe 和 Javaw exe 之间的区别 那里指出java exe用于控制台和javaw exe用于窗口应用程序 在其他一些帖子中提到控制台不可用jav
  • 具有延迟加载功能的单元素枚举类型单例

    我读了很多关于在 java 中实现单调模式的不同风格的论坛和帖子 似乎 枚举是在 java 中实现单调模式的最佳方法 我想知道如何使用 Java Enum 在 java 中实现 SingleTone 模式带有延迟加载能力 因为枚举只是类 第
  • 使用 Maven 将 Dll 打包在 Jar 中 - 单一目标

    我在我的 Maven 项目中添加了一个 DLL 作为依赖项 如下所示