FaqExcludesJa

コンパイルからクラスやパッケージを除外できますか?

ソースツリー内にコンパイルしたくないクラスがある場合があるでしょう。 たぶん壊れていたり (コンパイルできない)、そのときにはあなたの目的とは単に関係なかったりで。 既定では、通常の Java SE プロジェクトはすべてのソースをコンパイルするように構成されます。

6.0 より前の IDE はクラスを除外する機構を GUI で提供していませんでした。 6.0 の機能に関しては Excludes49026 を参照してください。 しかし、あなたのプロジェクトの build.xml ファイル (ファイル タブ参照) を編集することで、必要としないクラスやパッケージを飛ばすことができます。 the Ant documentation for the javac task に従い、 nbproject/build-impl.xml 内で -init-macrodef-javac ターゲットを探し、 build.xml に複製し、 あなたの望むように含むように調整するだけです。

例えば、NetBeans 5.5 では、build.xml に追加できます:

    <target name="-init-macrodef-javac">
        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
            <attribute name="srcdir" default="${src.dir}"/>
            <attribute name="destdir" default="${build.classes.dir}"/>
            <attribute name="classpath" default="${javac.classpath}"/>
            <attribute name="debug" default="${javac.debug}"/>
            <element name="customize" optional="true"/>
            <sequential>
                <javac srcdir="@{srcdir}" destdir="@{destdir}" debug="@{debug}" deprecation="${javac.deprecation}" source="${javac.source}" target="${javac.target}" includeantruntime="false" excludes="${excludes}">
                    <classpath>
                        <path path="@{classpath}"/>
                    </classpath>
                    <compilerarg line="${javac.compilerargs}"/>
                    <customize/>
                </javac>
            </sequential>
        </macrodef>
    </target>

build-impl.xml 版からの唯一の変更は excludes="${excludes}" です。 ここで nbproject/project.properties を編集して excludes を必要にあわせて定義します。 例えば、excluded という名前のパッケージを除外するには次を追加します。

excludes=excluded/

ここで、コンパイルすると、javac はそのパッケージ内ではクラスをコンパイルすることを求められなくなります。

いくつかの注意:

  1. 複数の除外や実際にはいかなる Ant パターンも指定できます。例えば

excludes=\

   com/mycorp/irrelevant/,\
   :*/internal/,\
   :*/*_temp.java
パターンの最後の /そのパッケージと、その "下" のパッケージすべてを意味することに注意してください。
  1. 既定のすべてを含むのではなく、includes 属性を指定して列挙されたクラスと/またはパッケージだけを指定できます。
  2. Java コンパイラは通常は、コンパイルしようとしたクラスから静的に参照されているクラスは、それらが除外されるものであろうとも、コンパイルします。この状況をエラーとして扱いたいのであれば、<javac> タスク上で sourcepath="" を単純に指定します。
  3. どの非 Java リソースの複写されるか、どのユニットテストが実行されるかなども制御したいのであれば、追加のターゲットを上書きする必要があるでしょう。

---

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo