Jarファイルにいくつかのリソースを追加したいと思います。私はそれを「プロファイリング」し、ビルドセクションに追加しました。
しかし、リソースは最終的なjarファイルにはありません。
ここに私のpom.xml
のプロファイルセクションがあります:
<profile>
<id>myProfile</id>
<build>
<finalName>name</finalName>
<resources>
<resource>
<targetPath>.</targetPath>
<filtering>false</filtering>
<directory>${basedir}/profiles/myFolder</directory>
<includes>
<include>file.txt</include>
<include>file.xml</include>
</includes>
</resource>
</resources>
</build>
</profile>
そしてここに私が発行するコマンド:
mvn clean install -PmyProfile
どうしましたか?
あなたのPOMスニペットはグローバルに正常に見え、問題を再現できません。これが私が使用したpom.xmlです:
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow</groupId>
<artifactId>Q3459013</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>myProfile</id>
<build>
<finalName>name</finalName>
<resources>
<resource>
<directory>${basedir}/profiles/myFolder</directory>
<filtering>false</filtering>
<includes>
<include>file.txt</include>
<include>file.xml</include>
</includes>
</resource>
</resources>
</build>
</profile>
</profiles>
</project>
次のプロジェクト構造で:
$ tree。 。 ├──pom.xml ├──profiles │└──myFolder │ ├──file.txt │└──file.xml └──src ├──main │└──Java │└──com │└──stackoverflow │└──App.Java └──test └──Java └──com └──stackoverflow └──AppTest.Java 11ディレクトリ、5ファイル
そして、これが私が得るものです:
$ mvn clean install -PmyProfile ... $ cd target $ tree。 。 ├──classes │├──com ││└──stackoverflow ││└──App.class │├──file.txt │└──file.xml ├──maven-archiver │└──pom.properties ├──name.jar ├── surefire-reports │├──com.stackoverflow.AppTest.txt │└──TEST-com.stackoverflow.AppTest.xml └──test-classes └──com └──stackoverflow └──AppTest.class $ jar xvf name.jar 作成:META-INF/ 膨張:META-INF/MANIFEST.MF 作成:com/ 作成:com/stackoverflow/ 膨張:file.xml 膨張: com/stackoverflow/App.class 膨張:file.txt 作成:META-INF/maven/ 作成:META-INF/maven/com.stackoverflow/ 作成:META-INF/maven/com.stackoverflow/Q3459013/ 膨張:META-INF/maven/com.sta ckoverflow/Q3459013/pom.xml が膨らんだ:META-INF/maven/com.stackoverflow/Q3459013/pom.properties
期待どおりに動作します。
リソースは、Mavenで2つの方法で指定できます。単純なものは、target/classesディレクトリにコピーされる単なるディレクトリです。 リソースディレクトリ 、 フィルタリング 、 含まれる/除外されるファイル を設定するだけです。デフォルトのリソースディレクトリはsrc/main/resourcesです。
複雑な設定の場合は、Mavenプラグインを構成する必要があります。 install次のアクションが実行されます を実行すると。パッケージ化フェーズでは、resources:resourcesゴールを使用してmaven-resources-pluginを実行します。
構成には resources mojo parameters のみを使用します。 例 を参照してください。
プロファイルを$ {projectdir}/profiles/myFolderに移動します。
<resources>
<resource>
<directory>profiles/myFolder</directory>
<includes>
<include>file.txt</include>
<include>file.xml</include>
</includes>
</resource>
</resources>
profiles/myFolderにインクルードするファイルのみが含まれている場合は、インクルード部分を省略できます。
このような単純な構造を試してみてください。これは私にとってはうまくいきます。
<profile>
<id>myProfile</id>
<build>
<finalName>name</finalName>
<resources>
<resource>
<targetPath>webapp</targetPath>
<directory>src/main/webapp</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
問題は次のとおりです:<targetPath>.</targetPath>
、問題を修正するためにそれを開始します。
Jarをパックするには、mavenはtarget/classesフォルダーのコンテンツを使用します。それ以外の場合は、maven-jar-pluginを使用して、何をコピーするかを自分で構成します。