1

プログラマーに関する以前の質問からの提案に基づいて、現在のプロジェクトを3つのサブディレクトリ(swing、common、およびandroid)に分割し、それぞれに個別のAntスクリプトを作成しました。これで、SwingおよびCommonでNetBeansプロジェクトを簡単に作成し、Swingアプリをコンパイルするための適切な依存関係を設定することができました。次に、「共通」プロジェクトのクラスを使用するときに、Androidビルドプロセス用に別のAntスクリプトが必要であることに気付きました。

これで、プロジェクトのさまざまな部分を構築するために使用される4つのAntスクリプトと、プロジェクトごとに個別のsrc、test、およびその他のサポートディレクトリができました。私が最初に遭遇した問題は、NetBeansと「android」プロジェクトのantスクリプトの両方が、さまざまなビルドタスクの「common」プロジェクトで「build.xml」を使用したいということです。これらすべてのプロジェクトを、src、testなどのサブディレクトリを含む1つのディレクトリに統合することにしました。ソースコードはすでにプロジェクトごとに個別のパッケージに編成されており、SwingビルドとAndroidビルド用に個別のトラゲットを持つ単一のAntビルドスクリプトを使用できるため、これにより簡単になると思いました。

今私が遭遇している問題は、「android」プロジェクトをビルドしようとすると、すべてのSwingクラスもビルドしたいということです。これにより、多くのコンパイラエラーが発生します。パッケージ階層をコンパイルから<javac>除外するために、タスクを変更しました。bbct.swing

        <javac encoding="${java.encoding}"
                source="${java.source}" target="${java.target}"
                debug="true" extdirs="" includeantruntime="false"
                destdir="${out.classes.absolute.dir}"
                bootclasspathref="project.target.class.path"
                verbose="${verbose}"
                classpathref="project.javac.classpath"
                fork="${need.javac.fork}"
                excludes="${source.dir}/bbct/swing/**"> <------- here
            <src path="${source.absolute.dir}" />
            <src path="${gen.absolute.dir}" />
            <compilerarg line="${java.compilerargs}" />
        </javac>

ただし、Antは、Swingを使用するクラスのコンパイルを引き続き主張しています。

だから私は2つの質問があります:

  1. このプロジェクトを整理するための最良の方法は何ですか?私が試した2つのうちの1つ、またはまったく別のものを提案しますか?

  2. 最新のソリューションに固執する場合javac、プロジェクト内のSwingベースのソースファイルを無視するにはどうすればよいですか?

4

1 に答える 1

1

Antでjavacを使用してソースパッケージを除外する方法は?antのjavacタスクでソースを除外するにはどうすればよいですか?、属性<exclude>ではなく要素を使用した解決策を見つけました。excludes関連する<javac>タスクは次のとおりです。

        <javac encoding="${java.encoding}"
               source="${java.source}" target="${java.target}"
               debug="true" extdirs="" includeantruntime="false"
               destdir="${out.classes.absolute.dir}"
               bootclasspathref="project.target.class.path"
               verbose="${verbose}"
               classpathref="project.javac.classpath"
               fork="${need.javac.fork}">
            <src path="${source.absolute.dir}" />
            <exclude name="bbct/swing/**" />
            <src path="${gen.absolute.dir}" />
            <compilerarg line="${java.compilerargs}" />
        </javac>

補遺:

このソリューションの核心は、source属性または<src>要素に関連するパスを使用することにあると思います。これは、excludes要素が相対パスを使用しても同様に機能する必要があることを意味します。ただし、これはまだテストしていません。

于 2012-09-28T01:19:33.910 に答える