2016-03-18 2 views
0

У меня есть приложение для загрузки весны, где я хочу упаковать его в соответствии с профилем, который я создаю, например, когда я выдаю профиль x, я хочу, чтобы maven построил как jar; но при создании с профилем y, я хочу, чтобы maven построил как war.Как параметризовать файл Maven (pom.xml)?

Я хочу что-то вроде:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>my-app</artifactId> 
    <version>1.0.0</version> 
    <package>${buildMethod}</package> 
</project> 

Где ${buildMethod} тип упаковки.

Это будет принято путем выполнения команды, то есть mvn package -P buildProfile.

+1

Итак, вам хотите параметризовать файл Maven? –

+0

Да, точно, спасибо за правильный вопрос. – Adelin

+1

Я бросил пример и уточнил. –

ответ

3

Может быть, это поможет:

<profiles> 
    <profile> 
     <id>war</id> 
     <properties> 
      <deploy.type>war</deploy.type> 
     </properties> 
    </profile> 
    <profile> 
     <id>jar</id> 
     <properties> 
      <deploy.type>jar</deploy.type> 
     </properties> 
    </profile> 
</profiles> 

А затем просто использовать это свойство заполнитель ${deploy.type}.

+0

Это так просто, что мне стыдно задавать вопрос ... :( – Adelin

+2

Не забудьте упомянуть, что 'mvn package -P war' соответствует 'id' для профиля' war'. –

1

Вы можете легко добавить профили, со списком свойств, в ваш файл pom.

Сложение с помощью:

  • mvn package - Строит WAR по умолчанию (неявный)
  • mvn package -P deployWar - Строит WAR
  • mvn package -P deployJar - Сборки баночку
<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>my-app</artifactId> 
    <version>1.0.0</version> 

    <package>${deployment.type}</package> 

    <profiles> 

    <!-- This profile deploys the application as a WAR (default) --> 
    <profile> 
     <id>deployWar</id> 
     <properties> 
     <deployment.type>war</deployment.type> 
     </properties> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
    </profile> 

    <!-- This profile deploys the application as a JAR --> 
    <profile> 
     <id>deployJar</id> 
     <properties> 
     <deployment.type>jar</deployment.type> 
     </properties> 
    </profile> 

    </profiles> 
</project> 
Смежные вопросы