0

在 Java 的 NetBeans“工作区”中有几个项目(所有目录都在同一级别):

  • 主要的
  • MainExecutable(包含main(String[] args)调试方法)
  • JNILibrary(仅适用于 Linux)
  • 10个其他项目

我试图通过JNILibrary\pom.xml中的配置文件为 Windows 提供“存根”(只是一些空方法)源代码,使其在 Windows 上可调试:

<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项目时,我可以选择Set Configuration -> linux或。Set Configuration -> Windows

不幸的是,当我尝试调试MainExecutable项目时 - 它仍然(构建并)启动 Linux 版本 - 并且无法在我的 Windows PC 上启动。

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

这是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>
4

2 回答 2

2

正如您所写,将 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>
于 2016-01-25T12:34:26.743 回答
1

您可以使用操作系统名称来激活配置文件:

<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>
于 2016-01-22T19:16:59.977 回答