在 Netbeans 和 Maven 多模块项目中使用配置文件为 Windows 和 Linux 构建
Using profiles in Netbeans and Maven multimodule project to build for Windows and Linux
在 Java 的 NetBeans "workspace" 中有几个项目(所有目录都在同一级别):
- 主要
- MainExecutable(包含用于调试的
main(String[] args)
方法)
- JNILibrary(仅适用于 Linux)
- 另外 10 个项目
我试图通过 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 -> linux
或 Set 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>
在 Java 的 NetBeans "workspace" 中有几个项目(所有目录都在同一级别):
- 主要
- MainExecutable(包含用于调试的
main(String[] args)
方法) - JNILibrary(仅适用于 Linux)
- 另外 10 个项目
我试图通过 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 -> linux
或 Set 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>