2009-04-03 17 views
3

は、現在、当社のオペレーションチームがそれを展開する方がはるかに簡単時間を持つように小さなアプリをパッケージ化しようとしています。 私の要件は、プロジェクトがコンパイルされ、圧縮されることです。Mavenのアセンブリ生成

コマンドラインから "mvn -DmyProfile clean generate-sources package"コマンドを実行し、出力用にzip形式を使用することを宣言する上でどのファイルをどこに置く必要があるかを詳しく説明するsrc.xmlファイルを作成しました。私は2つの私のターゲットフォルダ内のファイル、jarおよびzipファイルを取得した結果

。 zipファイルは、私のプロパティファイルがPOMから適切な値で注入されなかったことを除いて、私が必要とするように正確に構造化されています。代わりに、すべての{変数}はまだそこにあります。 一方、jarファイルは、注入されたすべての権利の値を持っているようだが、瓶の構造は、私が必要とするものではありません。

キッカーは私がプロジェクトにJava Service Wrapperを追加しようとしたために発生したもので、src.xmlファイルですべての新しいファイルをプロジェクトフォルダ構造に入れる必要があるためです。その前に、まったく同じコマンドが完全に機能し、jar構造であっても、Eclipseの実際のプロジェクト構造に一貫していました。

はその部分FOT作業すべてを持ってしようとしていることで、私はMVNアセンブリとの競合を作成しなかった場合だけで不思議、Javaのサービスラッパーを非難されていません。

ご迷惑をおかけして申し訳ありません。

おかげで、 ヤン

+0

pomの関連部分を貼り付けることができますか(必要に応じてダミー値を使用します)。 – whaley

答えて

0

私は第2の問題の答えを見つけました。

mvn clean package -P env-prod 

そして、それは私のconfigファイル内の正しい場所に正しい値を入れて:mavenのコマンドが間違っていた、私が正常に実行することでした。 -Dの代わりにスイッチ-Pを使用してプロファイルを選択することに注意してください。

+1

-Dは、プロパティを定義します。このプロパティは、オプションでアクティブにするプロファイルをトリガするために使用できます。 -pは、pom.xmlのアクティベーションルールに関係なく、プロファイルを直接アクティブにします。 –

1

だから、Mavenのは、Zipアーカイブ内のlibフォルダに含まれます「スナップショット」jarファイルを作成しますが判明。そのスナップショットのjarには、適切な値で注入された設定ファイルが含まれています。言い換えれば、ファイルシステム参照の代わりにクラスローダーを使用して設定ファイルを読み込むと、それは動作するはずです。私はZipアーカイブのルートに設定ファイルを入れていないと言われた任意の速度では

。だから、Mavenがアーカイブを挿入せずにプッシュしていた設定ファイルは、私の場合、最初にそこにあるべきではありません。

しかし、ここではのpom.xml内に含まれます私のsrc.xmlファイルの新しいコンテンツです:まだjarファイルとzipアーカイブを出力しますが、

<assembly> 
<id>bin</id> 
<includeBaseDirectory>false</includeBaseDirectory> 
<formats> 
    <format>zip</format> 
</formats> 
<fileSets> 
    <fileSet> 
     <directory>src/main/bin</directory> 
     <outputDirectory>/bin</outputDirectory> 
     <includes> 
      <include>**/*.sh</include> 
     </includes> 
     <fileMode>777</fileMode> 
    </fileSet> 
    <fileSet> 
     <directory>lib</directory> 
     <outputDirectory>/lib</outputDirectory> 
     <includes> 
      <include>**/*.jar</include> 
     </includes> 
    </fileSet> 
    <!-- Wrapper files --> 
    <fileSet> 
     <directory>lib/wrapper</directory> 
     <outputDirectory>/lib</outputDirectory> 
     <includes> 
      <include>**/*</include> 
     </includes> 
    </fileSet> 
    <fileSet> 
     <directory>src/main/bin/wrapper</directory> 
     <outputDirectory>/bin/wrapper</outputDirectory> 
     <includes> 
      <include>**/*</include> 
     </includes> 
     <fileMode>777</fileMode> 
    </fileSet> 
    <fileSet> 
     <directory>src/main/conf</directory> 
     <outputDirectory>conf</outputDirectory> 
     <includes> 
      <include>**/*</include> 
     </includes> 
    </fileSet> 
</fileSets> 
<dependencySets> 
    <dependencySet> 
     <outputDirectory>/lib</outputDirectory> 
     <includes> 
      <include>*:jar:*</include> 
     </includes> 
     <excludes> 
      <exclude>*:sources</exclude> 
     </excludes> 
    </dependencySet> 
</dependencySets></assembly> 

ジッパーはスナップショットジャーが含まれているので今はすべてがうまくいくはずです。

(そしてそれはので、私はこの質問のためのトピックをオフに行くなら、私に知らせて別のポストのためかもしれません)設定ファイルに注入された値は、内部プロファイルから1ではないことを

... EXCEPT私のPOM.xml。私の.m2フォルダにあるsettings.xmlのものです。しかし、settings.xmlのプロファイルに活性化をオフにすると、この問題を解決していないようです。ここで再び

<activation> 
<activeByDefault>false</activeByDefault> 
</activation> 

は、私が実行し、コマンドラインである:

「ENV-PROD」は
mvn -Denv-prod clean generate-sources package 

注入される値を含むpom.xmlのプロファイル。

関連する問題