创建SWT Maven项目,而不必提供特定于平台的SWT二进制文件

创建SWT Maven项目,而不必提供特定于平台的SWT二进制文件,maven,swt,Maven,Swt,我正在尝试构建一个(几乎)独立于平台的SWT Maven原型,用它来构建SWT应用程序。它应该根据平台自动下载所需的SWT库。这是我到目前为止的pom: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://

我正在尝试构建一个(几乎)独立于平台的SWT Maven原型,用它来构建SWT应用程序。它应该根据平台自动下载所需的SWT库。这是我到目前为止的pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>de.mackaz</groupId>
    <artifactId>swttest</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <swt.version>3.7</swt.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>${swt.groupId}</groupId>
            <artifactId>${swt.artifactId}</artifactId>
            <version>${swt.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <debug>true</debug>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>mac</id>
            <activation>
                <os>
                    <name>mac os x</name>
                </os>
            </activation>
            <properties>
                <swt.groupId>org.eclipse.swt.carbon</swt.groupId>
                <swt.artifactId>macosx</swt.artifactId>
            </properties>
        </profile>
        <profile>
            <id>windows</id>
            <activation>
                <os>
                    <family>windows</family>
                </os>
            </activation>
            <properties>
                <swt.groupId>org.eclipse.swt.win32.win32</swt.groupId>
                <swt.artifactId>x86</swt.artifactId>
            </properties>
        </profile>
        <profile>
            <id>linux</id>
            <activation>
                <os>
                    <family>linux</family>
                </os>
            </activation>
            <properties>
                <swt.groupId>org.eclipse.swt.gtk.linux</swt.groupId>
                <swt.artifactId>x86_64</swt.artifactId>
            </properties>
        </profile>
    </profiles>
</project>

4.0.0
麦卡兹
(为什么?)。
因为我不想为所有平台提供SWT JAR以及我的原型,所以我想编写一个小脚本,自动下载正确的库

但现在我有了下一个问题:是否有可靠的来源可以下载特定于平台的SWT JAR?当试图从eclipse.org下载它们时,您不会得到任何永久和可靠的链接。 分发SWT Maven项目而不必提供特定于平台的SWT二进制文件的最佳实践是什么

编辑:

经过一些研究后,此问题的其他信息:

似乎有一个自3.4以来就存在的相关问题:

此外,还有一个Eclipse论坛条目,其中有人要求Maven回购:

我还发布了一个(相当多余的)论坛条目:


所以还没有解决方案(但我对其他解决方案持开放态度)

在EclipseMaven存储库中没有SWT库。自3.4起存在相关(未解决)问题:

编辑:

很酷,至少现在有一个测试库已经包含了很多SWT库:

如果结构没有改变,可以编写客户端,然后与非测试Maven repo交换地址。

从Eclipse4.6.2开始,SWT(以及所有Eclipse)将发布到Maven central。如果您使用的是Gradle,该插件有一个插件,使其非常简单:

apply plugin: 'com.diffplug.gradle.eclipse.mavencentral'
eclipseMavenCentral {
  release '4.7.0', {
    compile 'org.eclipse.swt'
    useNativesForRunningPlatform()
  }
}

我曾经尝试过这种方法,但从我的网站上看,没有可能的方法。我提供了特定于平台的库,可通过maven profile从特定文件夹手动构建。。