Maven не передает зависимости журнала в опубликованную мною jar-библиотеку - PullRequest
0 голосов
/ 06 декабря 2018

Я построил регистратор структурных данных на основе Logback, и я опубликовал jar для своего собственного nexus.Библиотека jar разработана scala, и я опубликовал ее sbt publish:

name := "StructuredLogging"
version := "0.1.3-SNAPSHOT"
scalaVersion := "2.11.6"
organization := "com.xxxxxx.gds"
homepage := Some(url("https://github.xxxxxx.com/xxxxx/StructuredLogging"))
organizationHomepage := Some(url("https://github.xxxxxx.com/xxxxx"))

libraryDependencies ++= Seq(
  "com.chuusai" %% "shapeless" % "2.3.2",
  "ch.qos.logback" % "logback-core" % "1.2.3",
  "ch.qos.logback" % "logback-access" % "1.2.3",
  "ch.qos.logback" % "logback-classic" % "1.2.3",
  "org.scalatest" %% "scalatest" % "3.0.1" % "test",
  "com.typesafe.play" %% "play-json" % "2.6.0"
)

libraryDependencies ++= Seq(
  "com.fasterxml.jackson.core" % "jackson-core" % "2.8.0"
  , "com.amazonaws" % "aws-java-sdk-core" % "1.11.31" % "provided"
)

libraryDependencies += "org.slf4j" % "slf4j-api" % "1.7.25"
libraryDependencies += "org.slf4j" % "slf4j-log4j12" % "1.7.25"
libraryDependencies += "com.internetitem" % "logback-elasticsearch-appender" % "1.6"

mainClass := Some("com.xxxxxx.xxx.structure.logging.main.Main")

publishMavenStyle := true
publishTo := {
  val nexus = "http://nexus.xxxxxx.com/nexus/content/repositories/"
  if (version.value.trim.endsWith("SNAPSHOT"))
    Some("snapshots" at nexus + "snapshots")
  else
    Some("releases" at nexus + "releases")
}
publishArtifact in Test := false
credentials += Credentials(Path.userHome / ".ivy2" / ".credentials")
pomExtra :=
  <url>https://github.xxxxxx.com/xxxxx/StructuredLogging</url>
    <scm>
      <url>git@github.xxxxxx.com:xxxxx/StructuredLogging.git</url>
      <connection>scm:git@github.xxxxxx.com:xxxxx/StructuredLogging.git</connection>
    </scm>
    <developers>
      <developer>
        <id>xxxxx</id>
        <name>Xx, Xxx</name>
        <url>https://github.xxxxxx.com/xxxxx</url>
      </developer>
    </developers>

В файле pom моей библиотеки jar есть все необходимые для logback и slf4j зависимости:

    <?xml version='1.0' encoding='UTF-8'?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>
    <groupId>xxx.xxxxxx.xxx</groupId>
    <artifactId>structuredlogging_2.11</artifactId>
    <packaging>jar</packaging>
    <description>StructuredLogging</description>
    <url>https://github.xxxxxx.com/xxxxx/StructuredLogging</url>
    <version>0.1.3-SNAPSHOT</version>
    <name>StructuredLogging</name>
    <organization>
        <name>xxx.xxxxxx.xxx</name>
        <url>https://github.xxxxxx.com/xxxxx</url>
    </organization>
    <url>https://github.xxxxxx.com/xxxxx/StructuredLogging</url>
    <scm>
        <url>git@github.xxxxxx.com:xxxxx/StructuredLogging.git</url>
        <connection>scm:git@github.xxxxxx.com:xxxxx/StructuredLogging.git</connection>
    </scm>
    <developers>
        <developer>
            <id>xxxxx</id>
            <name>xx, xxx</name>
            <url>https://github.xxxxxx.com/xxxxx</url>
        </developer>
    </developers>
    <dependencies>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.11.6</version>
        </dependency>
        <dependency>
            <groupId>com.chuusai</groupId>
            <artifactId>shapeless_2.11</artifactId>
            <version>2.3.2</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-access</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.scalatest</groupId>
            <artifactId>scalatest_2.11</artifactId>
            <version>3.0.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.typesafe.play</groupId>
            <artifactId>play-json_2.11</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-core</artifactId>
            <version>1.11.31</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency>
            <groupId>com.internetitem</groupId>
            <artifactId>logback-elasticsearch-appender</artifactId>
            <version>1.6</version>
        </dependency>
    </dependencies>
</project>

Но когда я использовал lib jar в другом проекте X, он все равно пропустил зависимости для logback и slf4j.Мне нужно добавить еще зависимости в проект X, чтобы скомпилировать его.Кроме того, когда я проверяю зависимости для проекта X с mvn dependency:tree, я получаю результат:

[INFO] |  \- com.googlecode.protobuf-java-format:protobuf-java-format:jar:1.4:compile
[INFO] \- xxx.xxxxxx.xxx:structuredlogging_2.11:jar:0.1.3-SNAPSHOT:compile
[INFO] ------------------------------------------------------------------------

Где xxx.xxxxxx.xxx:structuredlogging_2.11:jar - это мой lib jar.Но все зависимости, определенные в моем lib jar, не переносятся в текущий проект X.

Как перенести зависимости logback в проект X через pom моей structuredlogger lib, чтобы новые проекты, которые собираютсяиспользовать мою библиотеку не будет добавлять другие зависимости в их собственный pox.xml?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...