как ссылаться на родную DLL из репозитория Maven? - PullRequest
5 голосов
/ 16 января 2012

Если JAR сопровождается встроенной DLL в репозитории Maven, что мне нужно поместить в мой pom.xml, чтобы эта DLL была в упаковке?

Чтобы быть более конкретным, возьмите, например, Jacob library. Как заставить jacob-1.14.3-x64.dll перейти в папку WEB-INF/lib после запуска mvn package?

В нашем локальном репозитории 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>

Но установка тех же зависимостей в POM нашего проекта и запуск mvn package не заставляют DLL переходить на WEB-INF/lib, но JAR добивается успеха.

Что мы делаем не так?

Ответы [ 2 ]

8 голосов
/ 14 октября 2013

Благодаря подсказке от Monty0018 я смог решить проблему. Код 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>
6 голосов
/ 17 января 2012

Для DLL вам потребуется использовать Копировать зависимости MOJO .

Вы можете отфильтровать все зависимости, кроме DLL, и указать в любом месте структуры своего проекта для их копирования, включая целевой файл / webapp / WEB-INF / lib.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...