我有一个Netbeans项目,我让Netbeans处理包装;它使用Netbean的build-impl.xml Ant脚本来打包它。有些软件包我不想在Netbeans创建的最终jar中结束。有没有办法将这些包排除在最终的jar中?
在build-impl.xml文件中,我认为这是调用Jar命令的地方,或者至少是定义的。
<target name="-init-presetdef-jar">
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
<jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
<j2seproject1:fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes},**/editor/**"/>
</jar>
</presetdef>
</target>
我要排除的其中一个包称为“编辑器”。我在上面的副本中添加了它,试图让它被排除但是没有用,“编辑器”包及其所有类仍然出现在最后的jar中。
我有什么想法可以将这个包从jar中排除?我宁愿不触摸build-impl.xml文件,而是通过弄乱netbeans为我们设置的build.xml文件来实现这一点......如果解决方案只触及该文件,那么奖励积分。
感谢
答案 0 :(得分:3)
好的我找到了两种方法(每种方法都有自己的缺点),都来自“属性”窗口的“源”部分。
1)将您不想要的软件包移动到其中一个测试包文件夹中。在属性 - &gt;您可以添加或编辑测试包文件夹的源。这里的缺点是你只能使用包作为测试。这对我来说很好,因为我必须使用该代码的唯一一次是当我在我的IDE上时。如果我需要将此包添加到jar中,它可能会成为一个问题。
2)在属性中 - &gt;右下角的源代码中有一个标记为Includes / Excludes的按钮,您可以使用该按钮添加文件或包以排除最终jar。这里的缺点是,如果代码依赖于其他包,则代码完全无法使用。 Netbeans基本上排斥了它。这不适合我。
理想的解决方案是设计哪些包装到最终罐子然后有各种配置文件来构建这些罐子的方法。也就是说我可以构建Jar-A或Jar-B,每个都有自己的包。在标记此问题之前,我将等待该解决方案。
答案 1 :(得分:0)
您不需要将包裹移动到任何地方。您仍然可以排除所有不想包含在最终JAR中的*.class
文件。
打开nbproject/project.properties
文件并找到dist.archive.excludes
,然后将所有*.class
文件名(将被排除)作为逗号分隔的值提供给该键dist.archive.excludes
。
示例:
dist.archive.excludes=`**/X*.class,**/Y*.class,**/FullClassName.class`
**/X*.class
,**/Y*.class
,X和Y是该类的前缀,您可以如上所示提供完整的类名
语法为
**/X*.class
,其中X是类名的前缀。
答案 2 :(得分:0)
2)您可以直接定义所有必须排除的* .class文件,而不是从Final jar中定义整个程序包。转到您的build-imple.xml文件中的标记
<target name="-init-presetdef-jar">
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
<jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
<j2seproject1:fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes},**/editor/**"/>
</jar>
</presetdef>
</target>
生成jar文件。现在找到属性excludes =“ $ {dist.archive.excludes},然后对其进行编辑。
例如:excludes =“ {**/X*.class
,**/Y*.class
,**/FullClassName.class
”