Java Maven程序集,创建具有不同依赖关系的多个可运行jar

时间:2019-04-03 14:43:44

标签: java maven maven-assembly-plugin

我正在尝试创建和运行可以在Windows和Mac上运行的应用程序。我对Java还是很陌生,因此一直在研究为Windows和Mac(具有不同依赖项)构建可运行jar的选项

因此,基本上有一个主类,唯一的区别是一个应用程序使用swt org.eclipse.swt.win32.win32.x86_64依赖项,另一个应用程序使用org.eclipse.swt.cocoa.macosx.x86_64依赖项。

我目前有以下明智的设置:

<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.1.1</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.connectingmedia.swttest.App</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>

                <executions>
                    <execution>
                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
                        <phase>package</phase> <!-- bind to the packaging phase -->
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

我的依赖项:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.eclipse.swt</groupId>
        <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
        <version>4.3</version>
    </dependency>
</dependencies>

现在这可以很好地创建Windows可执行jar。我可以将jar的mac版本的依赖性更改为swt的mac版本。但是最好同时创建两者。我发现了有关创建多个可运行jar的问题:Creating Two Executable Jars Using maven-assembly-plugin

但是它们使用另一个主类,并且没有不同的依赖关系。 <descriptorRef>jar-with-dependencies</descriptorRef>似乎总是包含所有依赖项,还是有办法选择要使用的依赖项?

无论如何,主要问题是:我是否要以正确的方式创建一个maven文件,该文件可以创建多个具有不同依赖项的可运行jar?

0 个答案:

没有答案