不同版本库的我有一个NetBeans的模块(Module.jar
)在其pom.xml
宣布很大的依赖性:构建模块与Maven的
<groupId>com.company</groupId>
<artifactId>module</artifactId>
<packaging>nbm</packaging>
...
<dependency>
<groupId>org.netbeans.api</groupId>
<artifactId>org-netbeans-modules-editor-lib</artifactId>
<version>${netbeans.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.netbeans.api</groupId>
<artifactId>org-netbeans-modules-editor-lib2</artifactId>
<version>${netbeans.version}</version>
</dependency>
...
<properties>
<netbeans.version>RELEASE701</netbeans.version>
</properties>
正如你可以看到,该版本被声明为变量netbeans.version
。
现在我有两个使用此模块的Netbeans平台应用程序:ApplicationA
使用NB平台版本6.9.1和ApplicationB
使用NB平台7.0.1。双方将宣布Module
作为一个依赖:
<dependency>
<groupId>com.company</groupId>
<artifactId>module</artifactId>
<version>3.0.10</version>
</dependency>
Module
编译罚款与平台的两个版本,但如果用同样的版本库的编译只会正常运行当前的应用程序使用(即Module
会如果使用版本6.9.1进行编译,则只能在ApplicationA
上正常运行,并且如果使用版本7.0.1进行编译,则只能在ApplicationB
上正常运行)。
如何/在哪里可以定义变量netbeans.version
,那么Module
将根据将使用它的应用程序编译正确版本的库?
你确定这是一个编译的问题,或者更确切地说,你的模块在不同版本的org-netbeans-modules-editor-lib中添加了运行时执行的事实吗? – mrembisz 2012-02-01 12:27:32
为什么不直接将模块编译为较低版本并使NetBeans依赖项不可传递,或者在将模块添加到项目时将其排除?这样,项目将不得不定义netbeans版本,并且模块不会以传递方式添加该依赖项。 – Thomas 2012-02-01 12:31:13
@mrembisz,它可能是它在运行时加载不同的版本 - 无论哪种方式,不应该在某个地方指定版本,所以它总是会加载正确的版本?也编辑的问题,因为一些(不是全部)库使用'运行时 '。 –
Marcelo
2012-02-01 12:34:50