2

プロファイルでmavenアセンブリプラグインを使用して、アプリケーションの構造を含むzipファイルを生成し、パスが正しいことを保証しています。

<profiles>
    <profile>
        <id>desenvolvimento</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <arquivo_tef4j>classpath:tef4j.properties</arquivo_tef4j>
            <arquivo_bd>classpath:bancoDados.properties</arquivo_bd>
            <arquivo_aplicacao>classpath:aplicacao.properties</arquivo_aplicacao>
            <modelo_dav>classpath:modelos_relatorio/dav.rptdesign</modelo_dav>
        </properties>
    </profile>
    <profile>
        <id>producao</id>
        <properties>
            <arquivo_tef4j>file:../config/tef4j.properties</arquivo_tef4j>
            <arquivo_bd>file:../config/bancoDados.properties</arquivo_bd>
            <arquivo_aplicacao>file:../config/aplicacao.properties</arquivo_aplicacao>
            <modelo_dav>file:../modelos/dav.rptdesign</modelo_dav>
        </properties>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <finalName>${project.artifactId}</finalName>
                        <archive>
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <classpathPrefix>../lib/</classpathPrefix>
                                <mainClass>com.hrgi.pdv.App</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <descriptors>
                            <descriptor>src/main/assembly/assembly.xml</descriptor>
                        </descriptors>
                        <archive>
                            <manifest>
                                <mainClass>com.hrgi.pdv.App</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

「desenvolvimento」という名前のプロファイルはIDEでの開発に使用され、もう1つのプロファイルはプロダクションのzipファイルを生成するために使用されます。ご覧のとおり、プロファイルの違いは基本的にプロパティ値にあります。「desenvolvimento」プロファイルを使用している場合は正常に機能していますが、2番目のプロファイルのプロパティ「modelo_dav」に問題があります。このプロパティは「aplicacao.properties」で使用されますが、アセンブリプラグインはプロパティ$ {modelo_dav}を変更せずに「aplicacao.properties」をコピーします。jarファイルを開くと、「aplicacao.properties」ファイルの値が正しいため、 mavenがプロパティを変更する前に、アセンブリプラグインがファイルをコピーしていると想定しています。Mavenがプロパティを変更した後、アセンブリプラグインにファイルを強制的にコピーさせる方法はありますか?もう1つの質問は、最終的なjarファイルからプロパティファイルを削除するにはどうすればよいですか?

4

2 に答える 2

0

次のように、アセンブリ プラグインにソース ディレクトリではなくビルド ディレクトリからリソース ファイルをコピーさせることができます。

<fileSet>
  <directory>${project.basedir}/src/main/resources</directory>
  <outputDirectory>conf</outputDirectory>
  <includes>
    <include>*.properties</include>
  </includes>
</fileSet>

の中へ

<fileSet>
  <directory>${project.build.directory}/classes</directory>
  <outputDirectory>conf</outputDirectory>
  <includes>
    <include>*.properties</include>
  </includes>
</fileSet>

于 2015-12-15T09:11:45.553 に答える
0

アセンブリはpackage、jar と同じフェーズで実行されprocess-resources、少なくとも既定では、フィルタリングを処理しているフェーズの後にあります。したがって、これはシーケンスの問題ではないことを示唆しています。

アセンブリがどこからファイルを取得しているかを正確に判断するために、綿密に調査し、何らかのテストを行うことをお勧めします。ターゲットではなく、未処理のソース側から直接取得している可能性があります。

于 2013-01-31T15:54:58.067 に答える