java - Maven 不会在我发布的 jar 库中传输日志依赖项
问题描述
我基于 Logback 构建了一个结构数据记录器,并将一个 jar 发布到我自己的 nexus。lib 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>
在我的 jar lib 的 pom 文件中,有它需要的所有 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>
但是当我在另一个项目 X 中使用 lib jar 时,它仍然错过了 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。
如何通过我的structuredlogger
lib的pom将logback依赖项转移到项目X,以便将使用我的lib的新项目不会在他们自己的pox.xml中添加其他依赖项?
解决方案
推荐阅读
- ruby-on-rails - 在rails 6上的table ruby中嵌套循环查看错误的顺序
- javascript - 如何在鼠标悬停时显示滚动条?
- c - 初学者问题/问题:Scanf 在 MacOS 终端中无法按预期工作
- c++ - 用指针实现删除重复功能
- python - 如何根据条件将 csv 拆分为 2 个数据框
- git - 在 gitlab 中是否可以在不记录的情况下推送更新提交?
- java - 在 tools.jar 中哪里可以找到 Treemaker 相关文档
- sql - Laravel 5.6.9 - 数据库计数给出不同的输出
- python - 如何让这段代码更高效(KS测试)
- html - 如何将动态值放入来自 React 中 JSON 文件的 HTML 字符串中?