2017-08-17 7 views
0

OSB(Oracle Service Bus)コンポジットの自動ビルドとデプロイメントを作成しようとしています。このようなシステムは構築サ​​ーバー上でMavenとOSBプラグインを設定した後(POMが置かれているディレクトリからコマンドプロンプトを経由して実行する)は、2つのコマンドで構成されていますMavenを使用したOracle Service Busのデプロイ:あるディレクトリからファインドをデプロイするときに別のディレクトリが失敗する

mvn package 
mvn deploy -DoracleServerUrl=http://serverurl:port -DoraclUsername=username -DoraclePassword=password 

これは、次のようにビルドシステムに障害が発生しました例外:ビルドシステムは、ビルドフェーズの間に最初のコマンドでパッケージを作成し、リリースフェーズ中に第2のコマンドで展開しているため

The session cannot be activated due to the existence of conflicts. 

しかし、私は信じている、それはコアだで、これがあります。

私は、コードを直接取るとディレクトリ1から2つのコマンドを実行する場合: D:\ OSBComposites \ HelloWorldOSBService \ HelloWorldOSBService コマンドを実行し、複合体は罰金展開。

私は、文字通りディレクトリ2ディレクトリ1から同じコードをコピーして、ディレクトリ2から同じコマンドを実行する場合: D:\ OSBComposites \ HelloWorldOSBService \ HelloWorldOSBService2 2番目のコマンドは、上記の引用と同じ例外で失敗。

これは一回限りの状況ではありません。何十回も一貫して再作成できます。 Directory 2からのコマンドの実行中に上記の例外が発生すると、Directory 1からのコマンドの実行は常に成功します。

はい、これは単純なデフォルトのHelloWorldコンポジットです。単純なように、絶対パスへの参照は不要です。

MavenまたはOSBに、コンポジットを最初にデプロイした元のパスを記憶しているキャッシュや、コンポジットが別の場所から配置されないようにする他のメカニズムがありますか?

答えて

2

pom.xml/path/directory1/pom.xmlにある場合、OSBプロジェクトはdirectory1としてデプロイされます。ディレクトリ2が観察された場合、ディレクトリ2が再配置される可能性があります。 あなたが別の場所からそれを展開する必要がある場合は、あなたが例えば/path2/directory1/pom.xml

に置くことができ、これは動作するはずです: は、以下のようなパスにプロジェクトの内容をコピーして、

Mavenの展開を実行します
D:\OSBComposites\HelloWorldOSBService2\HelloWorldOSBService 
+0

これは、ありがとうございました。 これらをTFSビルドシステムに統合しようとしている人は、注意すべき点がいくつかあります。 ソースは常に "S"という名前のディレクトリからコンパイルされます。ビルド手順がビルド自体からサーバーに展開された場合(これはお勧めできません)、アーティファクトを必要な名前のサブフォルダに配置する必要があります。 リリースは、ビルドのパブリッシュ・アーティファクト・ステップの「アーティファクト名」値と一致するディレクトリから実行されます。そこに目的のディレクトリ名を入力します。 – mattbbpl

+0

「配備」とは、アーティファクト・リポジトリ(例えば、ネクサス)にプッシュすることを意味します。これは、開発ビルドでSNAPSHOTビルドが常に発生することです。 OSBランタイムへの「デプロイメント」は、統合テストの前の段階で行われます。ユニットテストを伴ったDEV環境でのSNAPSHOTビルドで絶えず発生する場合には、望ましいことです。「より高い」環境では、テスト済みでバージョン管理されていないSNAPSHOTビルドをアーティファクト・リポジトリからプロモートすることができます。CIサーバーには、テスト/ uat/liveの「プロモーション」用のビルド・ジョブ –

関連する問題