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

时间:2016-01-22 12:17:38

标签: maven netbeans maven-3 netbeans-8 maven-profiles

在NetBeans"工作区"对于Java,有几个项目(所有目录都在同一级别):

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

我试图通过提供" stubs"来在Windows上调试它。 (只是一些空方法)Windows源代码通过 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 项目时,我可以选择Set Configuration -> linuxSet 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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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>