我有一个JAR。它不是FAT JAR。它只包含我的课程。但我的JAR依赖于azure-servicebus。我不想将azure-servicebus添加到我的jar中并使其变成胖罐。
我只是想在项目添加我的jar时,它应该自动下载azure-servicebus。
我正在使用Maven创建一个jar(没有依赖项)。
我该如何指定?这可能吗?
编辑:
我想要添加我的jar作为依赖项的项目应该下载azure-servicebus而不必为azure-servicebus添加依赖项或者在jar文件中打包azure-servicebus。
假设您的项目中已经有maven结构,您可以在qazxsw poi中添加以下行:
pom.xml
如果您没有maven结构,则需要生成一个。这通常可以在您使用的IDE中实现。
如果你希望生成的jar没有服务总线,你可以使依赖只是某种编译,这或多或少是这个问题的重复:<!-- https://mvnrepository.com/artifact/com.microsoft.azure/azure-servicebus -->
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-servicebus</artifactId>
<version>1.2.12</version>
</dependency>
。
但是,这意味着您的目标运行时必须以某种方式包含类的定义(可能通过-cp开关)。
从我的POV:如果您需要依赖项来运行您的程序,只要许可证允许,就包括它。
如果我理解正确,你所谈论的结构是:
Is there a Maven "compiler-only" scope for dependency artifacts依赖于依靠some-project
的your-jar
。
如果azure-servicebus
声明对some-project
的Maven依赖,那么它会自动将your-jar
作为依赖,因为Maven会进行传递依赖性解析。所以当你建立azure-servicebus
时,some-project
将在类路径上,如果azure-servicebus
是WAR / EAR,那么some-project
将成为WAR / EAR的一部分。
我问这个问题时却不知道非常重要的事情。
当jar放入artifactory时,相应的.pom文件也必须放在它旁边(目录之外)。这个pom文件告诉依赖项目你依赖的jar,它本身就需要依赖。
这个答案让我理解:
azure-servicebus
感谢所有尝试过的人。