Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从Maven repo引用本机DLL?_Java_Maven - Fatal编程技术网

Java 如何从Maven repo引用本机DLL?

Java 如何从Maven repo引用本机DLL?,java,maven,Java,Maven,如果一个JAR在Maven repo中附带了一个本机DLL,那么我需要在pom.xml中放入什么才能将该DLL放入打包中 更具体地说,以库为例。运行mvn包后,如何使jacob-1.14.3-x64.dll进入WEB-INF/lib文件夹 在我们的本地Nexus存储库中,我们对JAR和DLL有以下定义: <dependency> <groupId>net.sf.jacob-project</groupId> <artifactId>jaco

如果一个JAR在Maven repo中附带了一个本机DLL,那么我需要在pom.xml中放入什么才能将该DLL放入打包中

更具体地说,以库为例。运行
mvn包后,如何使
jacob-1.14.3-x64.dll
进入
WEB-INF/lib
文件夹

在我们的本地Nexus存储库中,我们对JAR和DLL有以下定义:

<dependency>
  <groupId>net.sf.jacob-project</groupId>
  <artifactId>jacob</artifactId>
  <version>1.16-M2</version>
</dependency>

<dependency>
  <groupId>net.sf.jacob-project</groupId>
  <artifactId>jacob</artifactId>
  <version>1.16-M2</version>
  <classifier>x64</classifier>
  <type>dll</type>
</dependency>

net.sf.jacob-project
雅各布
1.16平方米
net.sf.jacob-project
雅各布
1.16平方米
x64
动态链接库
但是,将相同的依赖项放在我们的项目POM中并运行
mvn包
,并不能使DLL转到
WEB-INF/lib
,但JAR可以很好地做到这一点


我们做错了什么?

对于DLL,您需要使用


您可以过滤掉除DLL之外的所有依赖项,并在项目结构中指定要将它们复制到的任何位置,包括您的target/webapp/WEB-INF/lib。

多亏了0018月的提示,我才能够解决这个问题。适用于我的maven代码:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <executions>
        <execution>
          <id>copy-dependencies</id>
          <phase>prepare-package</phase>
          <goals>
            <goal>copy-dependencies</goal>
          </goals>
          <configuration>
            <excludeTransitive>true</excludeTransitive>
            <includeArtifactIds>jacob</includeArtifactIds>
            <failOnMissingClassifierArtifact>true</failOnMissingClassifierArtifact>
            <silent>false</silent>
            <outputDirectory>target/APPNAME/WEB-INF/lib</outputDirectory>
            <overWriteReleases>true</overWriteReleases>
            <overWriteSnapshots>true</overWriteSnapshots>
            <overWriteIfNewer>true</overWriteIfNewer>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
 </build>

org.apache.maven.plugins
maven依赖插件
复制依赖项
准备包装
复制依赖项
真的
雅各布
真的
假的
目标/APPNAME/WEB-INF/lib
真的
真的
真的

PS我知道jacob 1.14已经过时了——只是举个例子,它没有回答这个问题?DLL是如何存储在您的存储库中的?它是否使用带有POM包装的DLL分类器?@eis不幸的是,没有-他们决定删除对DLL的需要:)@Monty0018更新了我的问题太好了,谢谢!把这个魔咒放到
准备软件包
阶段就成功了!另一个答案是代码,对不起,我当时没有注意到这个评论。你能告诉我一件事吗:它是如何工作的?你的解决方案?启动时必须修改库的路径吗?您必须做一些其他的事情来修改pom.xml吗?