2013-09-15 6 views
1

мне нужно получить Maven номер версии (например, 3.0.5, 3.1.0) внутри pom.xml файла мне нужно, чтобы иметь возможность добавлять правильные зависимости для:Как получить Maven номер версии внутри ПОМ

<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-model</artifactId> 
    <version>3.0.5</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-plugin-api</artifactId> 
    <version>3.0.5</version> 
</dependency> 

Версия 3.1.0 требует наличия библиотек в той же версии, что и для 3.0.5. Я бы предположил, что в поминах должно быть что-то вроде ${maven.version}, но я не смог его найти.

EDIT: Мне нужен проект, чтобы работать как в мавенна 3.0 и 3.1, так что я не могу это сделать статический он должен получить версию в настоящее время работает Maven

ответ

1

Лучшее решение определить свойство как это:

<properties> 
    <maven.version>3.0.3</maven.version> 
</properties> 

и определить зависимости с таким свойством в пределах y наш файл pom.

<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-core</artifactId> 
    <version>${maven.version}</version> 
    </dependency> 

или

<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-model</artifactId> 
    <version>${maven.version}</version> 
    </dependency> 

или плагин-апи, как следующее:

<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-plugin-api</artifactId> 
    <version>${maven.version}</version> 
    </dependency> 

для Maven-модели это на самом деле не имеет значения, если вы используете 3.0.1 или 3.0.5 или 3.1 вызывают изменение модели (pom.xml). Для плагина-api вы можете использовать 3.0.5 и запустить его в Maven 3.1. BTW: Вышеупомянутые вещи связаны с плагином, который работает под Maven 3.0 и 3.1.

+0

К сожалению, я использую 'RepositorySystemSession' в моем плагине, который был перемещен в другой пакет, и для поддержки 3.0 и 3.1 единственным решением, которое я вижу, является использование разных зависимостей для каждого из них. –

+0

Он не двигался, он был решен другим. Вы должны пойти другим способом, как в следующем плагине [iterator-maven-plugin] (https://github.com/khmarbaise/iterator-maven-plugin). Взгляните на код, есть решение для решения вашей проблемы. – khmarbaise

+0

Спасибо, похоже, я найду решение в плагине, который вы упомянули –

1

Вы можете добавить его самостоятельно через settings.xml файл ,

${settings.mvn.version} будет означать:

<settings> 
    <mvn> 
    <version>3.1.0</version> 
    <mvn> 
</settings> 

Или добавить {$mvn.version} непосредственно в pom.xml, используя:

<project> 
... 
    <properties> 
    <mvn.version>3.1.0</mvn.version> 
    </properties> 
... 
</project> 
+0

Я добавил редактирование с лучшим объяснением, в основном мне нужна эта версия для динамического предоставления в зависимости от исполняемой версии maven. –

+1

Я бы никогда не рекомендовал добавлять свойство, подобное этому, в файл settings.xml, потому что если у кого-то другой параметр settings.xml или не определил какое-либо свойство, проект не может быть скомпилирован и т. Д. – khmarbaise

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