我有一个Netbeans项目,让Netbeans处理打包;它使用Netbean的build-impl.xml Ant脚本对其进行打包。有些包我不希望在Netbeans创建的最终jar中结束。有没有办法将这些包排除在最终的jar中?
在build-impl.xml文件中,我认为这是调用Jar命令的地方,或者至少是定义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中。
你知道怎样才能把那个包从罐子里剔除吗?我不想接触build-impl.xml文件,而是通过修改build.xml文件来实现这一点,Netbeans留出了这个文件供我们修改……因此,如果解决方案只涉及该文件,则会加分。
谢谢
发布于 2015-01-13 23:25:41
我找到了两种方法(每种方法都有各自的缺点),这两种方法都是在属性窗口的源代码部分。
1)将不需要的包移动到某个测试包文件夹中。在属性->源中,您可以添加或编辑测试包文件夹。这里的缺点是,您只能将该包用作测试。这对我来说工作得很好,因为我唯一必须使用该代码的时候是在我的IDE上。如果我需要将这个包添加到jar中,这可能会成为一个问题。
2)在右下角的Properties -> Sources中,有一个标记为Includes/Excludes的按钮,您可以使用该按钮为最终jar添加要排除的文件或包。这里的缺点是,如果代码依赖于其他包,则代码完全不可用。Netbeans基本上排斥了它。这对我不起作用。
理想的解决方案应该是设计哪些包进入最终的jar,然后使用各种配置文件来构建这些jar。这就是说,我可以构建Jar-A或Jar-B,每个包都有自己的包。我将等待该解决方案,然后将此问题标记为已回答。
发布于 2020-04-16 14:17:29
你不需要将你的包移动到任何地方。您仍然可以排除所有不想包含在最终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是类名的前缀。
发布于 2020-04-16 14:23:46
2)您可以直接定义所有必须排除的*.class文件,而不是从最终的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”
https://stackoverflow.com/questions/26949419
复制相似问题