gradle 根据平台使用单独的依赖关系

pjngdqdw  于 2023-03-23  发布在  其他
关注(0)|答案(1)|浏览(119)

我必须根据平台包括不同的依赖关系,例如windows和linux使用gradle/maven。
如何确保在构建windows jar时只使用windows所需的依赖项,在创建linux jar时只使用linux所需的依赖项?

wmvff8tz

wmvff8tz1#

Maven pom.xml

例如,

  • Windows和Linux的SWT是不同的。
  • 当我使用jpackage时,在Windows上,图标文件是ico,在Linux上,图标文件是png
<dependencies>
        <dependency>
            <groupId>${swt.groupId}</groupId>
            <artifactId>${swt.artifactId}</artifactId>
            <version>${swt.version}</version>
        </dependency>
...

和添加配置文件

<profiles>

        <profile>
            <id>linux</id>
            <activation>
                <os>
                    <name>Linux</name>
                    <arch>amd64</arch>
                </os>
            </activation>
            <properties>
                <swt.groupId>org.eclipse.platform</swt.groupId>
                <swt.artifactId>org.eclipse.swt.gtk.linux.x86_64</swt.artifactId>
                <swt.version>3.119.0</swt.version>
                <zname>linux_x86_64</zname>
                <iconType>png</iconType>
                <zformat>tar.gz</zformat>
            </properties>
        </profile>

<profile>
            <id>windows</id>
            <activation>
                <os>
                    <name>Windows 10</name>
                    <arch>amd64</arch>
                </os>
            </activation>
            <properties>
                <swt.groupId>org.eclipse.platform</swt.groupId>
                <swt.artifactId>org.eclipse.swt.win32.win32.x86_64</swt.artifactId>
                <swt.version>3.119.0</swt.version>
                <zname>windows_x86_64</zname>
                <iconType>ico</iconType>
                <zformat>zip</zformat>
            </properties>
        </profile>
...

如何知道您的激活os名称和arch值?

在Linux上运行mvn help:system | grep "os\."
获取结果:

os.name=Linux os.version=5.13.0-40-generic os.arch=amd64

在Windows上运行mvn help:system | findstr "os\."
获取结果:

os.name=Windows 10 os.version=10.0 os.arch=amd64

将os name和os archMap为profile-〉activation-〉os-〉nameos-〉arch,然后config profile-〉properties将相应的值设置为swt.groupIdswt.artifactIdswt.version
当您运行mvn clean package时,maven将通过Map到os.name和os.arch值来自动选择配置文件激活。

相关问题