Проблемы с выходным каталогом maven - PullRequest
1 голос
/ 23 марта 2010

Я использую почти одинаковое POM для обоих своих проектов, они находятся в одной рабочей области, но они вообще не связаны, но связаны, потому что в обоих я использую spring и jboss. Вот пом:

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.springinaction.hello</groupId>
    <artifactId>spring-in-action</artifactId>
    <packaging>jar</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-in-action</name>
    <url>http://maven.apache.org</url>
    <properties>
        <jboss.ome>C:\jboss-5.1.0.GA\server\default\deploy</jboss.ome>
        <springversion>2.5.3</springversion>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>${springversion}</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.0</version>
                <configuration>
                    <warName>spring-book</warName>
                    <outputDirectory>${jboss.ome}</outputDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Чего я хочу добиться с помощью этого POM, так это того, что я хочу назвать свою войну при сборке spring-book.war и скопировать ее в указанное мной место Jboss. Теперь в моем первом проекте это работает, он делает именно то, что я просил, а в другом - нет. Я изменил переменную homeversion и свойства свойств jboss, но все остается тем же, что я могу сделать? Проект компилируется и все, все работает отлично, просто я не хочу каждый раз копировать в мой каталог jboss и ранее удалять старую войну, на каждое изменение исходного кода уходит около 20 секунд.

Ответы [ 2 ]

5 голосов
/ 13 апреля 2010

Проблема обнаружена в этой строке:

<packaging>jar</packaging>

Вы не используете правильную упаковку, она должна быть:

<packaging>war</packaging>

После этого изменения должен быть вызван плагин войны, и все должно работать как в другом проекте:)

2 голосов
/ 23 марта 2010

Вы можете оставить выходной каталог по умолчанию и использовать вместо него профиль с maven jboss plugin . У него есть цель hard-deploy, которая копирует ваш артефакт в каталог развертывания. Если он находится в профиле, вы можете активировать его, когда (и только когда) вы хотите.

Более того, с помощью плагина antrun вы также можете удалить старый файл war перед копированием поверх нового (это полезно, когда имя файла war включает версию, но в вашем случае это может не понадобиться).

<profiles>
    <profile>
        <id>deploy</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>remove-old-war</id>
                            <phase>prepare-package</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <tasks>
                                    <delete>
                                        <fileset dir="${jboss.ome}"
                                                 includes="*.war"/>
                                    </delete>
                                </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>jboss-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>redeploy-server</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>hard-deploy</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

Вы можете активировать профиль с помощью

mvn -Pdeploy install
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...