Я построил регистратор структурных данных на основе 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?