Универсальный pom.xml для создания исполняемого файла jar: Как я могу указать зависимости groupId / artifactId / version во время выполнения? - PullRequest
1 голос
/ 18 января 2012

У меня есть ситуация, когда мы работаем с Maven внутри Eclipse, и мы получаем много артефактов, содержащих код для развертывания. Работает очень хорошо.

Одна из наших целевых платформ вызывает исполняемый файл jar с простым именем в очень определенном месте, и после небольшого эксперимента я обнаружил, что подходящий jar-файл для запуска может быть создан с помощью new pom.xml. в зависимости только от артефакта, созданного из проекта Eclipse, который затем вызывает сначала копии-зависимости, чтобы получить зависимости от артефакта, а затем создает пустой jar-файл в правильном месте, но с Main-Class и Class-Path, установленными правильно в манифесте

Это хорошо работает для наших тестовых проектов, но теперь я хочу обобщить это, поэтому я должен иметь возможность предоставить groupId / artifactId / version для артефакта, который будет развернут во время вызова.

Я экспериментировал со свойствами-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 голосов
/ 18 января 2012

Не делай этого. Используйте maven-archetype-plugin для создания шаблона, который каждый раз выделяет новые проекты.

...