3

現在、運用チームが簡単にデプロイできるように、小さなアプリをパッケージ化しようとしています。私の要件は、プロジェクトがコンパイルされて圧縮されることです。

コマンドラインからコマンド「mvn -DmyProfile clean generate-sources package」を実行し、出力に zip 形式を使用することを宣言する上で、どのファイルをどこに置くべきかを詳述する src.xml ファイルを作成しました。

その結果、ターゲット フォルダーに jar ファイルと zip ファイルの 2 つのファイルが作成されます。zip ファイルは、私のプロパティ ファイルに POM からの正しい値が挿入されなかったことを除いて、私が必要としているとおりに構造化されています。代わりに、すべての {variables} がまだそこにあります。一方、ジャーには正しい値がすべて注入されているように見えますが、ジャーの構造は私が必要とするものではありません。

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

Java Service Wrapper を非難するのではなく、その部分ですべてを機能させようとして、MVN アセンブリとの競合を作成しなかったかどうか疑問に思っているだけです。

どんな助けでも大歓迎です。

ありがとう、ヤン

4

2 に答える 2

1

したがって、Maven は、Zip アーカイブ内の lib フォルダーに含まれる「スナップショット」jar を作成することがわかります。そのスナップショット jar には、正しい値が挿入された構成ファイルが含まれています。つまり、ファイル システム参照の代わりにクラス ローダーを使用して構成ファイルをロードすると、動作するはずです。

とにかく、構成ファイルを Zip アーカイブのルートに置かないように言われました。したがって、Maven が注入せずにアーカイブにプッシュしただけの構成ファイルは、私の場合、そもそもそこにあるはずがありません。

しかし、pom.xml に含まれる src.xml ファイルの新しいコンテンツは次のとおりです。

<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>

それでもjarとzipアーカイブが出力されますが、zipにはスナップショットjarが含まれているため、すべて問題ありません。

例外...(それは別の投稿になる可能性があるので、この質問のトピックから外れた場合はお知らせください)

構成ファイルに挿入された値が、POM.xml 内のプロファイルの値ではないこと。それらは、私の .m2 フォルダーにある私の settings.xml のものです。しかし、settings.xml プロファイルでアクティブ化をオフにしても、この問題は解決しないようです。

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

繰り返しますが、実行するコマンドラインは次のとおりです。

mvn -Denv-prod clean generate-sources package

「env-prod」は、注入される値を含む pom.xml 内のプロファイルです。

何か案が?

于 2009-04-07T18:03:05.697 に答える
0

さて、2番目の問題に対する答えを見つけました。Mavenコマンドが間違っていました。正常に実行したのは次のとおりです。

mvn clean package -P env-prod

そして、それは私の設定ファイルの適切な場所に適切な値を置きます。プロファイルを選択するために-Dの代わりにスイッチ-Pを使用していることに注意してください。

于 2009-04-07T22:43:09.143 に答える