2

Maven プロジェクトがありますが、いずれかのサーバーで Maven なしでビルドする必要があります。
標準のJDKコマンドを使用して可能です。プロジェクトのビルド中に Maven が JDK に送信したコマンドはどこで確認できますか?

4

3 に答える 3

6

Maven は多くのことを行います。Maven なしで Maven が行うことをシミュレートする簡単な方法はありません。

サーバーにmavenを絶対にインストールできない場合は、アーティファクトを別のサーバー(またはローカル)に構築し、scp経由でサーバーに移動します。

つまり、ローカルビルドを実行する必要が絶対にあるが、Maven を実行できない (ネットワークアクセスが禁止されている) サーバー用に Maven から RPM を生成するという同様のシナリオがあったことがあります。私が行ったことは、すべての依存関係を RPM に加えて、Ant ディストリビューションと Ant ビルド ファイルを入れることでした。RPM インストール スクリプトでは、依存関係がアンパックされ、Ant スクリプトが呼び出されます。それは機能しましたが、二重の作業を意味しました。

于 2012-06-18T14:12:07.900 に答える
1

これが私の解決策です。もちろんハードコードで、プロジェクトは非常に小さいですが、私にとっては役に立ちます

プロジェクト構造:
メイン フォルダ
- 依存関係 (ディレクトリ)
- モジュール 1 - src ...
- モジュール 2 - src ... - manufest.template
(ファイル)
モジュール 2 はモジュール 1 の依存関係を持ち、モジュール 1 は JDK1.5 でコンパイルされ、モジュール 2 は JDK1.6 でコンパイルされます.

@echo off

set JODA=dependency\joda-time-1.6.2.jar
set EJB=dependency\ejb-api-3.0.jar
set PERSISTANCE_API=dependency\persistence-api-1.0.jar
set DEPENDENCIES=%EJB%;%JODA%;%PERSISTANCE_API%
set TEMP_FILE=temp
set PUBLIC_INTERFACE_CLASSES=target\target-module1
set CODEGEN_CLASSES=target\target-module2
mkdir target
mkdir %MODULE1_CLASSES%
mkdir %MODULE2_CLASSES%

dir module1\*.java /s /B > %TEMP_FILE%
%JAVA_HOME_1_5%\bin\javac -classpath %DEPENDENCIES%;%MODULE1_CLASSES% -d %MODULE1_CLASSES% @%TEMP_FILE%

dir module2\*.java /s /B > %TEMP_FILE%
%JAVA_HOME_1_6%\bin\javac -classpath %DEPENDENCIES%;%JAVA_HOME_1_6%\lib\tools.jar;%MODULE1_CLASSES%;%MODULE2_CLASSES% -d %MODULE2_CLASSES% @%TEMP_FILE%

jar cf module1.jar -C %MODULE1_CLASSES% .
jar cfm module2.jar manifest.template -C %MODULE2_CLASSES% .

rm %TEMP_FILE%
rm -r target
于 2012-06-19T07:24:10.553 に答える