在 Netbeans 和 Maven 多模块项目中使用配置文件为 Windows 和 Linux 构建

Using profiles in Netbeans and Maven multimodule project to build for Windows and Linux

在 Java 的 NetBeans "workspace" 中有几个项目(所有目录都在同一级别):

我试图通过 profile[= 为 Windows 提供 "stubs"(只是一些空方法)源代码,使其在 Windows 上可调试54=] 在 JNILibrary\pom.xml:

<groupId>com.example</groupId>
<artifactId>jnilibrary</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<parent>
    <groupId>com.example.test</groupId>
    <artifactId>Main</artifactId>
    <version>0.0.1-SNAPSHOT</version>        
    <relativePath>../Main/pom.xml</relativePath>
</parent>

<build>
    <sourceDirectory>${src.dir}</sourceDirectory>
</build>

<profiles>
    <profile>
        <id>windows</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <properties>
            <src.dir>src/windows/java</src.dir>
        </properties>
    </profile>
    <profile>
        <id>linux</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <src.dir>src/linux/java</src.dir>
        </properties>
    </profile>
</profiles>

之后,当我在 NetBeans 中右键单击 JNILibrary 项目时,我可以 select Set Configuration -> linuxSet Configuration -> Windows

不幸的是,当我尝试调试 MainExecutable 项目时 - 它仍然(构建和)启动 Linux 版本 - 但无法在我的 [=66] 上启动=]个人电脑

有人可以指出正确的方向来解决我的问题吗?

这里摘自 Main\pom。xml:

<groupId>com.example.test</groupId>
<artifactId>Main</artifactId>
<version>0.0.1-SNAPSHOT</version>   

<packaging>pom</packaging>
<name>Main</name>
<modules>
    <module>../MainExecutable</module>
    <module>../jnilibrary</module>
    <module>../10/further/modules</module>
</modules>

此处摘自 MainExecutable\pom。xml:

<parent>
    <groupId>com.example.test</groupId>
    <artifactId>Main</artifactId>
    <relativePath>../Main</relativePath>
    <version>0.0.1-SNAPSHOT</version>       
</parent>
<artifactId>MainExecutable</artifactId>
<packaging>jar</packaging>

您可以使用 OS 名称来激活配置文件:

<build>
    <sourceDirectory>${src.dir}</sourceDirectory>
</build>

<profiles>
    <profile>
        <id>windows</id>
        <activation>
            <os>
                <name>Windows</name>
            </os>
        </activation>
        <properties>
            <src.dir>src/windows/java</src.dir>
        </properties>
    </profile>
    <profile>
        <id>linux</id>
        <activation>
            <os>
                <name>Linux</name>
            </os>
        </activation>
        <properties>
            <src.dir>src/linux/java</src.dir>
        </properties>
    </profile>
</profiles>

如您所写,将 2 个配置文件移动到 Main/pom。xml 并向它们添加新的 属性 jnilibrary.src.dir

<profiles>
    <profile>
        <id>windows</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <properties>
            <jnilibrary.src.dir>src/windows/java</src.dir>
        </properties>
    </profile>
    <profile>
        <id>linux</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>

        <properties>
            <jnilibrary.src.dir>src/linux/java</src.dir>
        </properties>
    </profile>
</profiles>

并在 JNILibrary\pom 中使用 属性。xml

<build>
    <sourceDirectory>${jnilibrary.src.dir}</sourceDirectory>
</build>