Nano Hash - криптовалюты, майнинг, программирование

Как использовать плагин sbt в качестве зависимости библиотеки в проекте sbt?

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

sbt-plugin

build.sbt

name := "sbt-plugin"
  sbtPlugin := true
  val commonSettings = Seq(
  organization := "com.example",
  version := "1.0",
  scalaVersion := "2.11.7", 
  javacOptions := Seq("-source", "1.8", "-target", "1.8"), 
  scalacOptions := Seq("-target:jvm-1.8", "-unchecked", "-deprecation", "-encoding", "utf8"))

  lazy val plugin = (project in file("plugin"))
  .settings(commonSettings: _*)
  .settings(
      name := "plugin"
  )

  lazy val root = (project in file("."))
                .settings(commonSettings: _*)
                .dependsOn(plugin)
                .aggregate(plugin)

sbt-plugin \ plugin \ src \ main \ scala \ com \ example \ Hello.scala

  package com.example

  // Sample code I would like to access from another sbt project
  object Hello {
     def show = println("Hello, world!")
  }

плагин-тест

plugin-test - это проект sbt, который я использовал для тестирования sbt-plugin

плагин-тест \ build.sbt

  name := """plugin-test"""

  version := "1.0"

  scalaVersion := "2.11.7"

  libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.4" % "test"

  fork in run := true

плагин-тест \ проект \ plugins.sbt

addSbtPlugin("com.example" % "sbt-plugin" % "1.0", "0.13","2.11")

плагин-тест \ SRC \ главная \ scala \ ком \ экзамен \ Test.scala

  package com.exam

  object Test {
     def result = com.example.Hello.show()
  }

Но когда я компилирую тестовый проект плагина, он показывает следующие ошибки:

  [error] E:\Play\SBT Plugin\sbt demo1\plugin-test\src\main\scala\com\exam\Test.scala:4: object example is not a member of package com
  [error] def result = com.example.Hello.show()
  [error] one error found

Я выполнил локальную публикацию и локальную публикацию для обоих проектов, и артефакты разрешились правильно. Я добавил sbt-plugin в plugins.sbt и скомпилировал проект, но Test.scala не удалось скомпилировать из-за указанной выше ошибки, как будто зависимости нет.

Что мне здесь не хватает?


Ответы:


1

Когда вы указываете свой плагин как addSbtPlugin, вы добавляете его только в среду сборки (т.е. делаете что-то в build.sbt), а не в путь к классам вашего приложения (вещи под src/main/...).

В вашем случае вам нужно использовать его как обычную зависимость.

27.03.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..