0

RMI を使用する Web アプリがあるため、RMI インターフェイス クラスは含まれていますが、その実装は含まれていません。インターフェイス定義が 2 つの場所で重複するのを避けるために、RMI サーバー コードを Web アプリの Eclipse プロジェクトに保持しようとしています。ただし、RMI サーバー クラスには main() メソッドがあるため、war ファイルから除外する必要があります。build.xml の jar タスクと .spec を使用して、RMI サーバー デーモンの RPM を作成します。

war タスクで excludes 句を使用してみました。その後、クラスで、

    <war webxml="${web.dir}/WEB-INF/web.xml" destfile="${dist.dir}/${ant.project.name}.war">
    <classes dir="${build}" excludes="**/RMIServer.class" />
        <fileset dir="${web.dir}" />
        <manifest>
            <attribute name="Built-Date" value="${TODAY}" />
            <attribute name="Built-By" value="${user.name}" />
        </manifest>
    </war>

次に、ファイルセットで:

    <war webxml="${web.dir}/WEB-INF/web.xml" destfile="${dist.dir}/${ant.project.name}.war">
        <classes dir="${build}" />
        <fileset dir="${web.dir}" >
            <exclude name="**/RMIServer*.class"/>
        </fileset>
        <manifest>
            <attribute name="Built-Date" value="${TODAY}" />
            <attribute name="Built-By" value="${user.name}" />
        </manifest>
    </war>

しかし、私はそれを機能させることができませんでした-サーバークラスはまだ戦争/WEB-INF/classes/...にあります

どうすればこれを達成できますか?それとも、単一のプロジェクトのこの目標は単に賢明ではありませんか?

4

2 に答える 2

0

<classes> あなたのファイルセットですクラス ファイルに<classes>ANDの両方を使用する必要はありません。<fileset>一方から除外すると、もう一方に含まれるようになると思います。

于 2013-03-29T17:29:25.547 に答える
0

あなたの最後の文は私の考えを反映しています。Web サーバーと RMI サーバーがある場合、一方が他方を呼び出したとしても、それらを別々のプロジェクトに配置します。私はおそらくMaven、または同様のものを使用して助けてくれるでしょう。

今日、そのような 2 つの異なるサーバー プロセスの実装を 1 つの Eclipse/IDEA/Maven/Ivy/その他のプロジェクトに組み込んだプロジェクトを見つけたら、非常に驚​​かれることでしょう。

于 2013-03-28T21:12:38.400 に答える