Maven: активация профиля в зависимости от свойства localRepository? - PullRequest
1 голос
/ 06 сентября 2011

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

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>

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

1 Ответ

0 голосов
/ 09 декабря 2015

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

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

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

...