8

私がMavenを初めて使用するのを手伝ってください。Mavenプロジェクトフォルダーとは別のディレクトリにターゲットフォルダーを生成しようとしています。要件に応じて、生成されたwarファイルは、MavenプロジェクトをビルドするときにC:\nareshフォルダーなどの別のフォルダーに配置する必要があります。

ここに私のコード:

<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">
   <packaging>war</packaging>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.test</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>

   <build>
    <directory>${project.basedir}/target</directory>
     <outputDirectory>C:\Software\${project.basedir}/target</outputDirectory>

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
             <configuration>
               <warSourceDirectory>WebContent</warSourceDirectory>
             </configuration>
        </plugin>
    </plugins>

    </build>
</project>
4

3 に答える 3

14

@khmarbaiseは正しいです。Mavenでは、可能な場合は規則に従う方がよいでしょう。そうでない場合は、別のビルドツールを使用する必要があります。そうしないと、最後まで戦い続けることになります。そうは言っても、目標を達成するために次のことを行うことができます。

<build>
    <outputDirectory>${user.home}/${project.artifactId}/target</outputDirectory>
    ...
</build>

これは、システムプロパティをルートディレクトリとして使用し、 ('project')user.homeにちなんで名付けられたフォルダに出力ディレクトリを作成します。<artifactId/>すべてのJavaシステムプロパティはpomで利用できます。これを他の場所で作成する必要がある場合は、上のディレクトリを基準にして作成できます。

代わりにmaven-war-pluginを使用する:

あなたの質問は、アーティファクト(warファイル)を別のディレクトリに出力するだけでよいことを示しているので、maven-war-pluginの出力ディレクトリの構成を変更することをお勧めします。例えば:

<build>
    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.0</version>
        <configuration>
            <outputDirectory>${user.home}/${project.artifactId}</outputDirectory>
        </configuration>
        </plugin>
    </plugins>
</build>
于 2013-01-03T01:58:38.107 に答える
3

Mavenについて最初に学ばなければならないことは、次のとおりです。Mavenには規則があります。これらの規則の1つは、現在のプロジェクトの下にあり、他の場所にはないターゲットフォルダーを持つことです。そしてさらに、絶対的なノーゴーはあなたのpomにいくつかの絶対的なフォルダ定義を入れています。

于 2013-01-02T08:51:46.390 に答える
2

受け入れられた答えと非常によく似ていますが、Dockerにマウントされているデプロイメントフォルダーを使用しています

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <outputDirectory>${project.build.directory}/deployments</outputDirectory>
            </configuration>
        </plugin>
    </plugins>
于 2018-02-08T22:24:10.427 に答える