Как получить Maven для загрузки platform.jar из проекта JNA

У меня есть следующая запись POM

<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna</artifactId>
    <version>3.3.0</version>
</dependency>

Когда я собираю свой проект, он загружает следующие файлы:

  • jna-3.3.0.jar
  • jna-3.3.0.jar.sha1
  • jna-3.3.0.pom
  • джна-3.3.0.jar.sha1

Если вы посетите хранилище по адресу http: //download. java.net/maven/2/net/java/dev/jna/jna/3.3.0/ вы можете увидеть множество других файлов. Почему Maven не загружает эти другие файлы?

Если вы откроете jna-3.3.0.pom, вы увидите

<plugins>
  <!-- fake out maven and install the binary artifact -->
  <plugin>
    <groupId>org.jvnet.maven-antrun-extended-plugin</groupId>
    <artifactId>maven-antrun-extended-plugin</artifactId>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>run</goal>
        </goals>
        <configuration>
          <tasks>
            <!--<ant dir="." target="dist" />-->
            <attachArtifact file="dist/jna.jar" />
            <attachArtifact file="dist/platform.jar" classifier="platform" type="jar" />
            <attachArtifact file="dist/src-mvn.zip" classifier="sources" type="jar"/>
          </tasks>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>

Я подозреваю, что проблема как-то связана с комментарием в pom "fake out maven и установите бинарный артефакт".

12 голосов | спросил Preston 18 J0000006Europe/Moscow 2011, 00:12:34

3 ответа


0

Если вы добавите в свой проект вторую зависимость наряду с существующей зависимостью JNA с добавленным классификатором, вы должны добавить артефакт в свою сборку.

<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna</artifactId>
    <version>3.3.0</version>
    <classifier>platform</classifier>
</dependency>

Поскольку теперь у вас есть два артефакта из одного проекта, было бы целесообразно извлечь элемент version в свойство уровня проекта, чтобы что обновление обновляет оба:

<properties>
    <jna.version>3.3.0</jna.version>
</properties>

<dependencies>
    <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna</artifactId>
        <version>${jna.version}</version>
    </dependency>
    <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna</artifactId>
        <version>${jna.version}</version>
        <classifier>platform</classifier>
    </dependency>
</dependencies>
ответил steve_barham 21 J0000006Europe/Moscow 2011, 16:20:47
0

Я не совсем понял, как использовать classifier в @ ответ steve_barham .

Я искал проект JNA в github и нашел файл с именем pom-jna-platform.xml , который включает следующие сведения об артефакте:

<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>4.0.0-SNAPSHOT</version>
<packaging>jar</packaging>

Итак, я просто использовал следующее для загрузки jna и jna-платформы jar:

<properties>
    <jna.version>4.0.0</jna.version>
</properties>

<dependencies>
    <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna</artifactId>
        <version>${jna.version}</version>
    </dependency>
    <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna-platform</artifactId>
        <version>${jna.version}</version>
    </dependency>
</dependencies>
ответил yair 12 AM00000010000002131 2013, 01:59:21
0

Я скачал файлы и поместил их в папку lib в корне проекта. Швы для работы просто отлично для меня. Вы должны обновить руководство, если они выпустят новую версию.

<properties>
    <jna.version>3.4.0</jna.version>
</properties>   

<dependencies>
    <dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna</artifactId>
    <version>${jna.version}</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/jna.jar</systemPath>
</dependency>
<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna</artifactId>
    <version>${jna.version}</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/platform.jar</systemPath>
    <classifier>platform</classifier>
</dependency>
</dependencies>
ответил Mikael Svensson 19 MonEurope/Moscow2011-12-19T16:47:20+04:00Europe/Moscow12bEurope/MoscowMon, 19 Dec 2011 16:47:20 +0400 2011, 16:47:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132