2013-03-14 2 views
5

Моя цель - выпустить проект, который имеет одну зависимость. У меня есть репозиторий nexus, в котором я развертываю как моментальные снимки, так и версии выпуска.версии maven освобождают кандидатов и снимок

Одна зависимости у меня есть

group:artifact:1.1.0-SNAPSHOT 

и следующий релиз-кандидат выпущен в моей связующей репо

group:artifact:1.1.0-RC1 

, когда просим версии плагина для разрешения зависимостей, он не утверждает, что нет доступна новая зависимость. Поэтому он считает, что

1.1.0-SNAPSHOT > 1.1.0-RC1 

Однако, если в моем проекте, у меня есть версия 1.0.0-SNAPSHOT, версия 1.1.0-RC1 разрешена в новейшей версии.

Что мне не хватает? (Я посмотрел в источники плагинов и у нас есть следующий фрагмент кода:.?

String otherQualifier = otherVersion.getQualifier(); 

if (otherQualifier != null) 
{ 
    if ((qualifier.length() > otherQualifier.length()) 
     && qualifier.startsWith(otherQualifier)) 
    { 
    // here, the longer one that otherwise match is considered older 
    result = -1; 
    } 
    else if ((qualifier.length() < otherQualifier.length()) 
     && otherQualifier.startsWith(qualifier)) 
    { 
    // here, the longer one that otherwise match is considered older 
    result = 1; 
    } 
    else 
    { 
    result = qualifier.compareTo(otherQualifier); 
    } 
} 

, который кажется багги мне Любая идея

ответ

9

Maven номера версии состоят в следующем:

<major version>.<minor version>.<incremental version>-<qualifier> 

Если все номера версий равны, классификатор сравнивается по алфавиту. «RC1» и «SNAPSHOT» и не сортируются по-разному с «a» и «b». В результате «SNAPSHOT» считается более новым, потому что он больше по алфавиту. this page в качестве справки.

Заметь, что a.b.c-RC1-SNAPSHOT будет считаться старшим, чем a.b.c-RC1.

Я не уверен, что предложить в качестве решения - это то, как работает управление версиями Maven.

+0

предоставляется ссылка помогло , спасибо – mirlitone

+0

Это только наполовину верно, так как SNAPSHOT - это специальный классификатор, который обрабатывается maven вне процесса, который вы описываете. См. Https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN401 –

1

Характеристики работают только с майором .minor.increment-qualifier с квалифицированным сравнением по лексиграционному порядку, независимо от моментального снимка или любого другого.

Я закончил тем, что нарисовал плагин maven-versions-plugin и реализовал собственную схему версий, которые считают, что версия моментального снимка кандидата на выпуск всегда старше, чем сам релиз-релиз.

Это было не слишком сложно реализовать, я простиралась от

org/codehaus/mojo/versions/ordering/MavenVersionComparator 

и объявленный собственный класс в

org/codehaus/mojo/versions/ordering/VersionComparators.java 

и реализовать свой собственный бизнес-логику

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