2011-09-06 5 views
1

в Maven Я хочу выполнить сборку только в том случае, если артефакт еще не установлен в репозиторий. Моя идея - использовать профиль, который по умолчанию неактивен, но будет активирован, если артефакт отсутствует. До сих пор я не был успешным, потому что кажется, что свойства Maven не могут использоваться для активации профиля?Maven: активация профиля в зависимости от свойства localRepository?

settings.xml:

... 
<localRepository>/local/m2repo</localRepository> 
... 

1) Это работает:

pom.xml:

... 
<profile> 
    <id>my-profile</id> 
    <activation> 
     <activeByDefault>false</activeByDefault> 
     <file> 
      <missing>/local/m2repo/something</missing> 
     </file> 
    </activation> 
    ... 
</profile> 

2) Это не работает:

pom.xml :

... 
<profile> 
    <id>my-profile</id> 
    <activation> 
     <activeByDefault>false</activeByDefault> 
     <file> 
      <missing>${settings.localRepository}/something</missing> 
     </file> 
    </activation> 
    ... 
</profile> 

3) Это не будет работать:

settings.xml:

... 
<properties> 
    <local.repository>${settings.localRepository}</local.repository> 
</properties> 
... 

pom.xml:

<profile> 
    <id>my-profile</id> 
    <activation> 
     <activeByDefault>false</activeByDefault> 
     <file> 
      <missing>${local.repository}/something</missing> 
     </file> 
    </activation> 
</profile> 

Есть ли какой-то обходной путь или альтернатива, как я могу проверить наличие моего артефакта и при необходимости запускать сборку? Спасибо за любые идеи!

ответ

0

Вы не можете этого сделать.

Расположение файла активации обычно относится к текущей папке проекта.

Свойства будут вычисляться только после того, как профили уже определены и начнется сборка.

Смежные вопросы