問題タブ [maven-resources-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - android-maven-plugin とリソースのフィルタリング
私はmavenの初心者で、android-maven-pluginを使用してAndroidプロジェクトをビルドするように構成しようとしています。assets ディレクトリに application.properties ファイルがあり、さまざまなアプリケーション設定が含まれています。そして、私は自分のポンからこの値を取得したいと考えています。プロパティファイルで、1つのプロパティを次のように定義します
また、POM で同じプロパティを定義します。
アセット ディレクトリのフィルタリングを有効にしました
そして、android-maven-plugin のサンプルのようにリソース プラグインを構成します。
しかし、このプロパティを使用してアプリケーションで Toast を表示しようとすると、MY PROPERTY の代わりに ${helloFromPOM} が表示されます。
Maven によって生成されたターゲット ディレクトリでは、このプロパティ ファイルが 2 つの場所に表示されます。
- /target/generated-sources/combined-assets/assets/application.properties
- /target/myapp-0.0.1-SNAPSHOT.apk\application.properties
最初は間違っています。MY PROPERTY ではなく ${helloFromPOM} が含まれています。第二に、apk ファイルの内部は正しいです。しかし、デバイスにこの apk をインストールすると、間違った値 ${helloFromPOM} が表示されます。
私は何を間違えましたか?
編集
答えてくれてありがとう、試してみましたが、このエラーが発生しました:
[エラー] ソースの生成中にエラーが発生しました。org.apache.maven.plugin.MojoExecutionException: com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.generateR(GenerateSourcesMojo.java:338) で com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.execute( GenerateSourcesMojo.java:102) org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) org.apache .maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder org.apache.maven.lifecycle の .buildProject(LifecycleModuleBuilder.java:84)。 http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
POM でコメント<resourceDirectory>${project.build.directory}/filtered-assets</resourceDirectory>
すると、ビルドは正常に完了しますが、フィルター処理されたアセットは使用されません。
cmd.exe /X /C ""C:\Program Files\Android\android-sdk\platform-tools\aapt.exe" package -m -J D:\projects\myapp\target\generated-sources\r -M D:\projects\myapp\AndroidManifest.xml -S D:\projects\myapp\target\filtered-assets --auto-add-overlay -A D:\projects\myapp\assets -I "C:\Program Files\Android\android-sdk\platforms\android-8\android.jar""
また、コマンドラインでこれを実行しようとすると、次のエラーが発生します: invalid resource directory name: D:\projects\myapp\target\filtered-assets/application.properties
. フィルタリングされたアセットの後のバックスラッシュではなく、間違ったスラッシュ。に変更<resourceDirectory>${project.build.directory}/filtered-assets</resourceDirectory>
して<resourceDirectory>${project.build.directory}\filtered-assets</resourceDirectory>
も役に立ちません。
PS私のプラグインセクションは次のようになります
maven - copy-resourcesゴールを使用したmaven-resources-pluginエラー:'resources'、'outputDirectory'が見つからないか無効です
maven-resources-pluginを使用して、copy-resourcesゴールを使用してフィルタリングを実行しようとすると、次のエラーが発生しました。
問題を切り分けるために、私は非常に単純なpom.xmlを作成し、 http://maven.apache.org/plugins/maven-resources-plugin/examples/copy-resources.htmlからほぼ逐語的にコピーして実行し、同じエラー。
私はそれを呼び出しています
何か案は?これがテストpom.xmlです。
maven - maven-resources-pluginとproject.build.resourcesタグの違いは何ですか?
maven-resources-plugin
Mavenで、とproject.build.resources
タグ の違いを理解するのに苦労しています。
どちらも同じ目的を持っているようです。maven-resources-plugin
[resources、testResources、copy-resources] のさまざまな目標は、resourcesタグを次のように使用して達成することもできます。
また、タグを使用すると、の目標と<resources>
同様に、ソースディレクトリ内の指定されたファイルが宛先ディレクトリに効果的にコピーされます。copy-resources
maven-resources-plugin
では、違いはありますか?
特定のシナリオで機能が異なりますか?
java - 開発中に実際に maven-resources-plugin を呼び出します (そしてコードで変数を使用します)?
maven の情報を使用して .properties ファイルでプロパティを定義したいと思います。例: app.name=project.build.artifactId。
ビルド時に resources:resources を呼び出すと、(できれば) 私の artifactId を持つ app.name を含む *.properties という名前のファイルが (Eclipse の) TARGET フォルダーに作成されます。
しかし、Eclipse を介して Java アプリケーションを実行すると、/target にあるファイルを使用するのでしょうか、それとも /src/main/resources (値自体ではなく変数プレースホルダーを含む) のバージョンを使用するのでしょうか?
編集:
「フィルター処理された」値を使用したいコードは次のとおりです。
プロジェクトのPOM.xmlからの関連情報:
project.properties の内容:
(JAR を実行せずに) Eclipse でプロジェクトを実行すると、最初のセグメント (静的ブロック内) の出力は文字通り "${project.build.version}" を返します。プロジェクトのタグの値を実際に返すわけではありません。
resources:resources を最初に実行して、それが何かを行うかどうかを確認することさえ試みましたが、そうではありませんでした。リソース フィルタリングは正確にはどのように機能するのでしょうか。
unit-testing - Maven リソース プラグインから Maven フィルタリング機能を使用する方法
Mavenの助けを借りて開発されたJavaプロジェクトがあります。プロジェクトの一部は単体テストです。単体テストによって生成されるすべての一時ファイルを Maven のターゲット ディレクトリに配置する予定です。何らかの理由で単体テストによって一時ファイルが削除されない場合、ターゲットディレクトリが消去され、すべての一時ファイルがファイルシステムに残っている可能性があるため、これは良い考えかもしれません。そこで、maven リソース プラグインのフィルタリング機能を見つけて、ユースケース用にインスタンス化できるかどうか疑問に思っていました。私の計画は、このようなプロパティファイルにエントリを持つことです
これにより、mavens ターゲット ディレクトリの場所を明らかにするプロパティが提供されるはずです。さて、警告は、フィルタリングされたプロパティ ファイルが maven リソース プラグインによってターゲット ディレクトリに格納されることです。
どうすればそこを見つけることができますか? ターゲット・ディレクトリーがどこにあるかを教えてくれるプロパティー・ファイルが必要ですが、プロパティー・ファイルはターゲット・ディレクトリーにありますか? 私のアプローチはまだ実行する価値がありますか? それともこのままでは無理ですか?
maven - 使い方/maven-remote-resources-plugin で
この例のように maven-remote-resources-plugin を使用して、複数の Maven モジュール間で共通のリソースを選択的に共有しようとしていますが、リソースの選択的なインポートを機能させるのが非常に困難です。
<includes>
以下のように and要素を使用しようとして<excludes>
います。プラグインの doco でこれらが言及されているのを見たことがありませんが、Eclipse はコマンド補完で有効なオプションとしてそれらを提供し、pom を実行してもエラーは発生しません。これまでのところ、インポートされたリソースを取得したり、まったく影響を与え<includes>
たりすることはできませんでした<excludes>
私のpomの関連セクションは次のとおりです。
共有リソース
リソース コンシューマ
<includes>
と の多くの組み合わせを試しまし<excludes>
たが、これまでのところすべて効果がありませんでした。
だから、
と
maven-remote-resources-plugin 構成の有効な要素とその使用方法 リソースを別々のMavenモジュールに合理的に分離できますが、それにより多数の単一ファイルMavenモジュールが作成され、余分なxmlが大量に追加される可能性があるため、可能であれば避けたいと思います。
プラグインのソース コードに目を通したくないのですが、それは次のステップです。
maven - maven-remote-resources-plugin のリソース フィルタリングを無効にする
マルチモジュールmavenプロジェクトのモジュール間で多数のリソースを共有するためにmaven-remote-resources-pluginを使用しようとしています。残念ながら、おそらくフィルタリングによって、バンドル中に共有バイナリ リソースが破損しています。
ローカル リポジトリから共有リソース jar を抽出すると、破損したバイナリ ファイルが含まれているため、この段階で破損が発生していると確信しています。
maven-remote-resources-plugin のフィルタリングをオフにするものはありますか?
現時点では、共有リソース モジュールの pom は次のようになっています
maven - マルチ環境のリソース フィルタリングで共通/既定のプロパティを使用していますか?
次のプロパティ ファイル構造を持つ Maven プロジェクトがあります。
などなど。
プロパティの 90% は、同じ環境内のクライアント間ですべて同じです (たとえば、clientA と clientB の dev props は通常すべて同じです)。ただし、同じプロパティがすべてのクライアントで同じであるとは限りません。
私がやりたいのは、ルート レベルで common.[dev|staging|production].properties ファイルを作成し、そこにすべての共通プロパティを移動してから、必要に応じて、クライアント プロパティ ファイルで共通プロパティをオーバーライドすることですが、それはできません。 Maven ではサポートされていないようです。たとえば、Maven は最初に処理されたプロパティ ファイルの値のみを使用するため、フィルタリングに使用される 2 つのプロパティ ファイルで同じプロパティを定義することはできません。
Maven で同じ機能を実現するにはどうすればよいですか? この問題を解決する別の方法はありますか? それとも無理ですか?
これが私がやりたいことです:
フィルタリングされた値は次のとおりです。
その代わりに、現在起こっていることは次のとおりです。
資力:
Resources-プラグイン構成
maven - maven-assembly-plugin を使用した OSGi バンドル配布の生成
各モジュールが Apache Felix maven-bundle-plugin を使用して OSGi バンドルとしてパッケージ化されているマルチモジュール プロジェクトがあります。プロジェクト全体は、上記のモジュールをリストする親 POM を使用して構築されます。一部のモジュールには、構成リソース (.properties ファイルなど) が含まれており、展開用にバンドル内でジャーリングするのではなく、専用の構成フォルダーに外部化する必要があります。私の目標は、次のような配布フォルダー (おそらく zip ファイル) を作成することです。
ディレクトリの下のプロパティ ファイル/conf
は、個々のモジュールの/target
フォルダから厳選されたファイルです。.properties
src フォルダーではなくターゲット フォルダーからファイルを取得する必要がある理由は、 Maven リソース フィルタリングを使用しており、ソースプロパティ ファイル${..}
に環境固有の値のプレースホルダーが含まれているためです。これらのプレースホルダーは、ビルド プロセス中に (ビルド プロファイルごとに) 適切に解決され、target/
フォルダーには実際の環境固有の値が含まれます。
私はこのような配布ファイルの操作を何度も行ってきました - 実行可能な JAR を含む配布などのために。この場合、アセンブリ記述子の「moduleSets」構成を使用したかったのです - すべてのバイナリ/jar を単一の配布フォルダに簡単にプルできます。 moduleSet/バイナリ記述子を使用します。特定のファイルを OSGi バンドルにパッケージ化することから除外することも簡単です (maven-bundle-plugin を使用)。私が立ち往生している唯一の問題は、/conf
配布フォルダーを作成し、そこに必要なプロパティ ファイルを収集することです。「moduleSet/sources」記述子内で「fileSets」を使用して**/target
、各モジュールの特定のファイルのみを含めようとしましたが、うまくいかないようでした。
誰にも提案/アドバイスがありますか?簡単な方法があるはずです。それとも全く使わないほうがいいですか?
ありがとう、
履歴書
@PetrKozelka 異なるバンドルに固有の構成ファイルを別のモジュールに抽出することが良い考えかどうかはわかりません。OSGi の要点は、開発とディストリビューションの両方で、バンドルが独立していて潜在的に再利用可能であることです。ソースコードでは、機能の実装と関連する構成ファイルがグループ化されていることだけが理にかなっています。ただし、特定のディストリビューションでは、管理者が特定のパラメーターを制御する必要がある場合、一部のファイルを抽出する必要がある場合があります。これは、ディストリビューション/アプリケーションによって異なる場合があります。アセンブリ構成は変更される可能性がありますが、バンドル/ソースは同じままです。また、各バンドルは個別に開発および使用される可能性がありますが、すべてのバンドルが常に同じ uber プロジェクトの一部である必要はありません。機能ドメイン/機能別ではなく、アーティファクトのタイプ(「モデル」、「サービス」、「データアクセス」、「構成」など)。このようなアプローチは、単一のアプリケーション/プロジェクト内では問題なく機能しますが、(機能ドメインごとに分割された) 垂直コンポーネントのサブセットを再利用する必要がしばしばあるエンタープライズ レベルでは失敗します。
モジュール内のファイル レイアウトに依存している点については、そのような依存関係があってはならないことに同意します。ファイルは、明示的な名前または命名規則によって厳選することができます - 非常に特定のディストリビューション要件に従って。(これはまさに私が直面しているケースです。)
java - Mavenは(既存の)pomファイルにアクセスできません
java
でプロジェクトをコンパイルしようとしていますmaven
。(m2eclipseコネクタ)の右click on pom file
>>で試してみましたMaven
Maven Install
Eclipse
次に、コマンドプロンプトでmvn clean compile
、を使用して試してみましたが、次のスクリーンショットを取得しました。
同じURLを使用してブラウザでpomファイルにアクセスできますが、にmaven
アクセスできないようです。maven-filtering-1.0 file
私はmaven
これに不慣れで、これを修正する方法がわかりません。どんな助けでも大歓迎です!