用于构建可执行jar的通用pom.xml:如何在运行时指定依赖关系groupId / artifactId / version?

时间:2012-01-18 14:16:21

标签: java maven properties

我有一种情况,我们在Eclipse中使用Maven,最终会得到许多包含要部署的代码的工件。效果很好。

我们的一个目标平台在一个非常特定的位置调用一个明确命名的可执行jar,经过一些实验后我发现可以通过 new pom创建一个合适的可运行jar。 xml仅取决于从Eclipse项目创建的工件,然后调用第一个复制依赖项以从工件中获取依赖项,然后在正确的位置创建一个空jar,但在清单中正确设置Main-Class和Class-Path

这适用于我们的测试项目,但现在我想概括它,所以我需要能够在调用时为工件提供groupId / artifactId / version。

我已尝试过像

这样的properties-maven-plugin
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-2</version>
    <executions>
      <execution>
        <phase>initialize</phase>
        <goals>
          <goal>read-project-properties</goal>
        </goals>
        <configuration>
          <files>
        <file>foobar.properties</file>
          </files>
        </configuration>
      </execution>
    </executions>
  </plugin>

期待

  <dependencies>
    <dependency>
      <groupId>${artifact.groupId}</groupId>
      <artifactId>${artifact.artifactId}</artifactId>
      <version>${artifact.version}</version>
    </dependency>
  </dependencies>

要正确填写。不幸的是,Maven抱怨道:

[ERROR]     'dependencies.dependency.artifactId' for ${artifact.groupId}:${artifact.artifactId}:jar with value '${artifact.artifactId}' does not match a valid id pattern. @ line 85, column 19
[ERROR]     'dependencies.dependency.groupId' for ${artifact.groupId}:${artifact.artifactId}:jar with value '${artifact.groupId}' does not match a valid id pattern. @ line 84, column 16
[ERROR]     'dependencies.dependency.version' for ${artifact.groupId}:${artifact.artifactId}:jar must be a valid version but is '${artifact.version}'. @ line 86, column 16

只会有一个依赖。我怎样才能实现我的目标?

1 个答案:

答案 0 :(得分:0)

不要这样做。使用maven-archetype-plugin创建一个模板,每次都标记出新项目。