1

我有一个 Maven 项目,它生成一个 WAR 文件并尝试从代码库中维护的 .properties 文件中的属性中获取工件版本。我还尝试使用自定义属性形成 WAR 文件的最终名称。

片段:

<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.xyz.webapps</groupId>
  <artifactId>webapps</artifactId>
  <version>${info.version}-${application.env}</version>
  <packaging>war</packaging>
  <!-- Filling in the artifact version with properties read below -->

   ...

  <!-- Filling in the WAR name -->
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <maven.war.final.name>${pom.artifactId}-${pom.currentVersion}.war</maven.war.final.name>
     <maven.test.skip>true</maven.test.skip>
   </properties>

 ...

 <build>
   <plugins>

   ...

   <!-- I read those properties files here -->
   <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-2</version>
    <executions>
      <execution>
        <phase>validate</phase>
        <goals>
          <goal>read-project-properties</goal>
        </goals>
        <configuration>
          <files>
            <file>${project.basedir}/webapps-main/src/main/resources/MessageResources.properties</file>
            <file>${project.basedir}/build.properties</file>
          </files>
        </configuration>
      </execution>
    </executions>
  </plugin>

  ...

 </plugins>

...
</project>

当我执行“mvn clean package”时,WAR 文件的名称会正确生成:

[INFO] Assembling webapp[webapps] in [/home/jubuntu/workspace/ui/new/webapps/target/webapps-2.8-qa]
[INFO] Processing war project
[INFO] Copying webapp resources[/home/jubuntu/workspace/ui/new/webapps/webapps-main/src/main/webapp]
[INFO] Webapp assembled in [4690 msecs]
[INFO] Building war: /home/jubuntu/workspace/ui/new/webapps/target/webapps-2.8-qa.war

但是当我执行“mvn clean install”(或“mvn clean deploy”)时,由于某种原因属性不会扩展(包阶段仍然生成具有正确名称的WAR):

[INFO] Building war: /home/jubuntu/workspace/ui/new/webapps/target/webapps-2.8-qa.war
[INFO] [install:install {execution: default-install}]
[INFO] Installing /home/jubuntu/workspace/ui/new/webapps/target/webapps-2.8-qa.war to /home/jubuntu/.m2/repository/com/xyz/webapps/webapps/${info.version}-${application.env}/webapps-${info.version}-${application.env}.war

我在这里做错了什么吗?我将如何使这项工作用于安装和部署我的工件?我使用 Maven 版本 2.2.1 进行构建。谢谢。

4

1 回答 1

1

你不能这样做。Maven 不支持它。这是基本的。

于 2012-09-14T18:20:34.103 回答