Как мне получить доступ к банке с классификатором?

1

У меня есть проект maven, который строит две банки как артефакты. Номер версии равен 0,7, а один артефакт построен по умолчанию, а второй имеет классификатор. Таким образом, в моем репозитории они выглядят так:

Tue Jun 10 08:06:12 MST 2014    14915   gokenizer-0.7.pom   
Tue Jun 10 08:06:12 MST 2014    40  gokenizer-0.7-core.jar.sha1 
Tue Jun 10 08:06:12 MST 2014    40  gokenizer-0.7.pom.sha1  
Tue Jun 10 08:06:12 MST 2014    32  gokenizer-0.7.jar.md5   
Tue Jun 10 08:06:12 MST 2014    32  gokenizer-0.7.pom.md5   
Tue Jun 10 08:06:12 MST 2014    37969843    gokenizer-0.7.jar   
Tue Jun 10 08:06:12 MST 2014    41887392    gokenizer-0.7-core.jar  
Tue Jun 10 08:06:12 MST 2014    32  gokenizer-0.7-core.jar.md5  
Tue Jun 10 08:06:12 MST 2014    40  gokenizer-0.7.jar.sha1

Как вы можете видеть, в банке с классификатором есть "ядро" в качестве его классификатора.

Путь к репозиторию:

http://myhostname/plugin/repository/project/DomainIQCore/LastSuccessful/repository/com/example/domain/gokenizer/0.7/

Все хорошо? Итак, как я могу указать, что я хочу использовать банку с "основным" классификатором при создании моего проекта?

В моем файле build.scala я попробовал это:

  libraryDependencies ++= Seq(
    "com.example.domain" % "gokenizer" % "0.7" % "core"
  ),

Но затем я получаю эту ошибку:

java.lang.IllegalArgumentException: Cannot add dependency 'com.example.domain#gokenizer;0.7' to configuration 'core' of module com.example#domainiq_2.10;0.1.0-SNAPSHOT because this configuration doesn't exist!

И когда я пробую это:

  libraryDependencies ++= Seq(
    "com.example.domain" % "gokenizer" % "0.7-core"
  ),

Он явно строит путь к хранилищу неправильно:

http://myhostname/plugin/repository/project/DomainIQCore/LastSuccessful/repository/com/example/domain/gokenizer/0.7-core/gokenizer-0.7-core.pom

Очевидно, я должен делать что-то неправильно. Я думал, что первый способ (с 4-м полем как "ядро") был таким, но я понятия не имею, что означает "потому что эта конфигурация не существует". Поскольку он, похоже, даже не пытается попасть в репозиторий, кажется, что я должен сказать SBT, что означает "ядро"? Это не имеет смысла для меня, потому что я думал, что это всего лишь часть пути, а не "конфигурация" как таковая.

Когда я удаляю 4-е поле, он правильно получает версию неклассификатора jar, поэтому я знаю, что репозиторий существует и работает...

Помогите?

  • 0
    В maven артефакт (jar) форматируется так: name-version.jar. Чтобы получить то, что вы хотите, вам нужно будет либо указать версию вашего основного jar как 0.7-core в зависимости от maven, либо изменить имя основного jar на blam-core с версией 0.7 (blam-core-0.7).
Теги:
maven
jar
sbt

1 ответ

1
Лучший ответ

Конечно, как всегда бывает, поставите вопрос и найдите ответ;)

Высказывание "классификатора" так много раз заставляло меня попробовать другой поиск в Великой Google Machine, который дал мне ответ.

        "com.example.domain" % "gokenizer" % "0.7" classifier "core"

Не знак процента. "классификатор" в качестве ключевого слова. Не имел представления. Теперь он компилируется.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню