我正在研究一个Netbeans平台应用程序,其中添加了几个模块。当我运行应用程序时,模块默认加载。是否有一种方式,我可以保持模块的默认状态为非活动,然后用户可以从应用程序中可用的插件工具激活所需的模块。
文档说有对禁用模块的支持。
实施标准模块系统允许模块处于几种状态,由外部配置控制:
- 未知。要么模块根本不存在,要么JAR存在存在,但其配置文件丢失或被屏蔽。
- 残疾(常规)。该模块存在并且已知,但未加载。
- 启用(常规)。的模块存在并加载。
- 自动装载。模块将被启用,如果只有当某个常规启用的模块需要它作为依赖项时(可能间接)。
- 急切。模块将被启用当且仅当它的所有依赖项都可以在不启用任何依赖项的情况下得到满足额外的常规模块。
常规模块用于功能在某种程度上是可见的,只是由于被启用通常是因为它们进行层注册。因为这功能可能需要,也可能不需要用户或部署者保留对启用状态的控制。
自动加载模块用于库。如果没有"客户"的话库,加载它的JAR没有任何意义。只有当一些常规模块需要它(直接,通过令牌等)加载。
Eager模块通常用于连接其他模块独立的功能块,表示为常规模块。如果这两个模块都启用了,则渴望桥接将为用一些可选的服务来集成它们。他们也可能用作通过其他渠道分发的常规模块的附加组件;或作为平台特定的模块,将只根据操作系统令牌。
请注意,这些启用状态不是模块固有的,这就是为什么它们没有在JAR中指定的原因;它们是它的一部分部署。另一个模块系统可能不会使用这些差别。特别是,通过JNLP或OSGi部署的模块仅仅通过包含在部署集中而启用,或者任由容器摆布
模块实现
方法1
如果你使用maven,我会尝试这样配置插件。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>nbm-maven-plugin</artifactId>
<version>3.13</version>
<extensions>true</extensions>
<configuration>
<moduleType>disabled</disabled>
</configuration>
</plugin>
方法2
如果这不起作用,在src/main/nbm目录中创建一个名为module.xml的文件,并在其中添加以下行。
<?xml version="1.0" encoding="UTF-8"?>
<nbm>
<moduleType>disabled</moduleType>
</nbm>
然后像这样在manifest文件中注册模块xml。
OpenIDE-Module-Layer: ro/emilianbold/nbmagazine/tutorial/layer.xml
注意:使用module.xml被弃用作为mvn-nbm-plugin 3.7如果我没有错的话。因此,如果您使用的是最新版本,则可能无法正常工作。对于最新版本,建议使用第一种方法。