【问题标题】:How to exclude a source package from jar in Netbeans project如何从 Netbeans 项目中的 jar 中排除源包
【发布时间】:2015-01-12 23:47:25
【问题描述】:

我有一个 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 文件来实现这一点……所以如果解决方案只涉及该文件,则可以加分。

谢谢

【问题讨论】:

    标签: java netbeans ant jar


    【解决方案1】:

    好的,我从“属性”窗口的“源”部分找到了两种方法(每种方法都有自己的缺点)。

    1) 将您不想要的包移动到您的测试包文件夹之一。在 Properties -> Sources 中,您可以添加或编辑您的测试包文件夹。这里的缺点是您只能将包用作测试。这对我来说很好,因为我唯一一次必须使用该代码是在我的 IDE 上时。如果我需要将此包添加到 jar 中,这可能会成为一个问题。

    2) 在 Properties -> Sources 的右下方有一个标记为 Includes/Excludes 的按钮,您可以使用它来添加要排除在最终 jar 中的文件或包。这里的缺点是,如果代码依赖于其他包,则完全无法使用。 Netbeans 基本上排斥它。这对我不起作用。

    一个理想的解决方案是设计哪些包进入最终的 jar,然后具有用于构建这些 jar 的各种配置文件。也就是说,我可以构建 Jar-A 或 Jar-B,每个都有自己的包。在将此问题标记为已回答之前,我将等待该解决方案。

    【讨论】:

    • 3) 项目属性 -> 构建 -> 打包 -> 从 JAR 文件中排除
    • 4) 为每个要单独使用的包创建一个项目。然后从需要包的项目中引用那些项目(项目属性 -> 库 -> 添加项目)
    • @a_horse_with_no_name 你能提供一个答案,所以我可以把它标记为答案
    • 抱歉,3) 不起作用,因为您不能在那里排除 .class 文件。所以这只会让你将可重用的代码移动到一个单独的项目中
    【解决方案2】:

    您无需将包裹移动到任何地方。您仍然可以排除您不想包含在最终 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是类名的前缀。

    【讨论】:

      【解决方案3】:

      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"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-20
        • 2013-08-29
        • 2017-07-11
        • 2012-06-05
        • 1970-01-01
        • 2016-04-29
        相关资源
        最近更新 更多