如何在构建JavaFX可执行文件时复制Maven中的本地jar?

时间:2014-09-19 16:00:30

标签: jar maven-3 javafx-8

我终于让Maven用这个pom构建一个JavaFX可执行jar:

<dependencies>

    <dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.7</version>
    </dependency>

    <dependency>
        <groupId>net.sf.opencsv</groupId>
        <artifactId>opencsv</artifactId>
        <version>2.0</version>
    </dependency>

    <dependency>
        <groupId>ProtocolAnalyzer</groupId>
        <artifactId>com.protocolanalyzer.api</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/libs/Protocol-decoder.jar</systemPath>
    </dependency>

    <dependency>
        <groupId>ProtocolAnalyzer</groupId>
        <artifactId>bluecove</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/libs/bluecove-2.1.1-SNAPSHOT.jar</systemPath>
    </dependency>

</dependencies>

<build>
    <plugins>

        <plugin>
            <groupId>com.zenjava</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>8.1.1</version>
            <configuration>
                <mainClass>com.andres.multiwork.pc.Main</mainClass>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

    </plugins>
</build>

这非常有效:我在jar的同一目录中获得了一个可执行jar和一个lib文件夹,其中复制了所有库。

但是我添加了两个本地jar(Protocol-decoder.jarbluecove-2.1.1-SNAPSHOT.jar)作为依赖项。但是,它们不会被复制到lib文件夹中,也不会被添加到jar中清单的类路径中。

我是Maven的新手,但我认为maven-resources-plugin是将依赖项复制到lib文件夹的插件。我如何告诉Maven或插件也复制我的本地依赖项。如果没有创建本地Maven存储库并在那里添加我的jar,这可能吗?

1 个答案:

答案 0 :(得分:0)

您正在寻找maven-dependency-plugin,目标副本依赖项。

<plugin>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>copy-dependencies</id>
      <phase>package</phase>
      <goals>
        <goal>copy-dependencies</goal>
      </goals>
      <configuration>
        <outputDirectory>lib</outputDirectory>
      </configuration>
    </execution>
  </executions>
</plugin>