2016-04-26 2 views
1

У меня возникли некоторые проблемы, пытаясь выяснить, как я могу загрузить в разные папки, касающиеся версии артефакта maven, а затем создать в этой папке созданные банки/войны/аранжировки.Как загрузитьArchives в разные папки в зависимости от версии артефакта maven?

Например, у меня есть артефакт с version 1.0.0 и groupId com.example. проблема заключается в том, что при загрузке этого файла Nexus структура папок заканчивается com/example/10-flavor1com/example/10-flavor2.

Вот что я получил в Gradle:

uploadArchives { 
    repositories { 
     mavenDeployer { 
      repository(url:"http:/nexus/content/repositories/releases/") { 
       authentication(userName: "username", password:"password") 
      } 

      addFilter('flavor1Release') { artifact, file -> 
       artifact.attributes.classifier.equals("flavor1Release") 
      } 
      addFilter('flavor2Release') { artifact, file -> 
       artifact.attributes.classifier.equals("flavor2Release") 
      } 

      pom('flavor1').artifactId = "artifactExample" 
      pom('flavor1').version = "1.0.0" 
      pom('flavor1').groupId = "com.example" 

      pom('flavor2').artifactId = "artifactExample" 
      pom('flavor2').version = "1.0.0" 
      pom('flavor2').groupId = "com.example" 
     } 
    } 
} 

мне было интересно, если есть способ настройки запроса хранилища, мы можем передать точную папку нам нужно создать для каждого экспоната. Или что-нибудь, что могло бы действительно сделать работу.

ответ

2

Это противоречит философии Maven CoordinatesgroupId:artifactId:version:

Три элементов, приведенных выше точки к конкретной версии проекта выпускающего Maven знать, кто мы имеем дело с ...

Координаты определяют уникальное местоположение для проекта. [...] Чтобы обзор, Maven Координата состоит из трех компонентов: ...

Тип <packaging> не является частью координат, например:

com.example:artifact1:1.0.0:jar 
com.example:artifact2:1.0.0:war 

становится репозиториев папки и файлы:

+- com/example/artifact1/1.0.0 
    +- artifact1-1.0.0.pom 
    +- artifact1-1.0.0.jar 
+- com/example/artifact2/1.0.0 
    +- artifact2-1.0.0.pom 
    +- artifact2-1.0.0.war 

в то время как вы хотите:

com.example:artifactExample:1.0.0:jar 
com.example:artifactExample:1.0.0:war 

становится:

+- com/example/artifactExample/1.0.0 
    +- jar 
     +- artifactExample-1.0.0.pom 
     +- artifactExample-1.0.0.jar 
    +- war 
     +- artifactExample-1.0.0.pom 
     +- artifactExample-1.0.0.war 

Помимо <packaging> типа не являясь частью координат (и, следовательно, в результате чего структура папок), мы видим еще одну проблему там: Мы имеем два РОМ с одинаковыми координатами в то время как координаты предназначены для идентификации, то есть уникальны.

+0

Спасибо, что ответили Герольдом. Я хотел бы знать, можно ли использовать аромат продукта как часть артефакта, чтобы я мог иметь конкретное место в зависимости от него, на самом деле не обращайте внимания на упаковку. Что-то вроде 'com/example/artifactExample/flavor/1.0.0'. –

+0

Должно быть возможно с ** двумя ** разными проектами/POM (разные координаты требуют разных проектов): 1) ' com.example.artifactExample.jar/ artifactExample-jar' и 2)' com.example.artifactExample. битва/ артефакт пример-битва'. Можно утверждать, следует ли использовать суффиксы '...- jar' и' ...- war' в '' s или нет. Я бы предпочел, чтобы они легко различали банки с ароматом. –

+0

Да, я хотел сделать это без изменения группы. Кажется, это не будет возможным. –

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