从artifactid拉变量

时间:2018-11-30 11:00:22

标签: maven pom.xml

我正在设置一个pom,以便从一个链接存储库中提取一份战争文件列表,我已经开始工作了,但是为了使事情更容易保持最新,我想引用内部变量。例如,这是我们其中一场战争的artifactItem:

            <artifactItem>
              <groupId>com.example</groupId>
              <artifactId>AwesomeService</artifactId>
              <version>1.0.0-SNAPSHOT</version>
              <type>war</type>
              <destFileName>${artifactItem.artifactId}##${artifactItem.version}.war</destFileName>
            </artifactItem>

这将生成文件,但不会获取工件ID或版本,如果我仅使用preject.version即可正常运行,但是将需要40个奇怪的服务,我需要使用它来构建,并且需要一个唯一的名称每一个。我可以为每个服务创建一个新属性,但是随后我需要为每个服务设置一个版本和一个名称属性。

还有其他人可以使用吗?

以下是完整的pom案例,如果有帮助的话,可以帮您了解一下

<?xml version="1.0" encoding="UTF-8"?>
<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>groupId</groupId>
<artifactId>artifactid</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>projectName</name>

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.5.1</version>
      <configuration>
        <source>1.6</source>
        <target>1.6</target>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <version>2.3</version>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>copy</goal>
          </goals>
          <configuration>
            <artifactItems>
              <artifactItem>
                <groupId>com.example</groupId>
                <artifactId>AwesomeService</artifactId>
                <version>1.0.0-SNAPSHOT</version>
                <type>war</type>
     <destFileName>${artifactItem.artifactId}##${artifactItem.version}.war</destFileName>
              </artifactItem>
            </artifactItems>
            <outputDirectory>${project.build.directory}</outputDirectory>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

1 个答案:

答案 0 :(得分:0)

尝试

    <properties>
       <targetJavaProject>${basedir}/src/main/java</targetJavaProject>
    </properties>

    <profiles>
        <profile>

            <id>dev</id>
            <properties>
                <profiles.active>dev</profiles.active>
                <spring.classpath>dev</spring.classpath> 
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>online</id>
            <properties>
                <profiles.active>online</profiles.active>
                <spring.classpath>online</spring.classpath>
            </properties>
        </profile>
    </profiles>