Java 如何将带有类的JAR文件分发给其他开发人员?
我需要将一些编译好的JAVA类分发给另一个开发团队。这样我就可以把编译好的类打包 然而,我的Java类也依赖于库A、B和C 最专业的方法是什么Java 如何将带有类的JAR文件分发给其他开发人员?,java,maven,gradle,Java,Maven,Gradle,我需要将一些编译好的JAVA类分发给另一个开发团队。这样我就可以把编译好的类打包 然而,我的Java类也依赖于库A、B和C 最专业的方法是什么 如何在gradle项目中包含位于文件系统某处的自定义JAR文件 我如何向其他开发团队传达依赖关系: 将所有依赖项“编译”到我的JAR中。但是,这可能会导致(版本)冲突 为普通JAR提供我自己的JAR文件,并提供一个带有依赖项的Gradle片段,这些依赖项应该包含在他们的Gradle项目中(或者ANT/Maven,或者只是他们使用的) 有没有办法:
- 如何在gradle项目中包含位于文件系统某处的自定义JAR文件
- 将所有依赖项“编译”到我的JAR中。但是,这可能会导致(版本)冲突李>
- 为普通JAR提供我自己的JAR文件,并提供一个带有依赖项的Gradle片段,这些依赖项应该包含在他们的Gradle项目中(或者ANT/Maven,或者只是他们使用的)李>
- 编写一个Gradle文件,将JAR拉入本地文件系统,以及所有依赖项,例如通过在Gradle文件中描述它们
- 在编译的JAR文件(“自描述”JAR文件)中包含一个Gradle/Manifest文件,该文件由Gradle自动读取并自动提取所有依赖项
创建一个包含所有要共享的源文件的服务。将此服务命名为“开发者依赖sdk”。
此服务的POM将如下所示:
<groupId>your.company</groupId>
<artifactId>developer-dependency-sdk</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<distributionManagement>
<repository>
<id>project-id</id>
<url>http://your_repository/server</url>
</repository>
</distributionManagement>
你的公司
更多细节
最专业的方法是什么
建议的方法是使用一个,例如
你一定要小心
然后,您可以使用mvn clean deploy
(使用Maven)或其他等效工具(如果您使用的是其他构建工具,如Gradle)部署快照并释放工件
确保还部署了源jar,以便开发人员可以轻松地从ide中访问源代码
对于Maven:
<pluginManagement>
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
</plugin>
[...]
</plugins>
</pluginManagement>
<plugins>
[...]
<plugin>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
[...]
</plugins>
[...]
org.apache.maven.plugins
maven源插件
3.2.1
[...]
[...]
maven源插件
附加来源
罐子没有叉子
[...]
只要部署的pom.xml
文件声明所有依赖项,支持Maven依赖项的构建工具将确保它们也下载所有可传递的依赖项。您需要一个人工制品管理器,如artifactory()
然后,您可以编写一个gradle脚本来构建jar,并将其发布到artifactory服务器及其所有依赖项。如果依赖项是公开的,则无需发布它们,因为artifactory服务器将具有到在线存储库(例如jcenter、mavencentral)的链接。
然后,您的同事可以编写一个maven或gradle脚本,指定并下载jar及其所有依赖项
repositories {
maven {
url "http://repo.mycompany.com/artifactory"
}
}
dependencies {
implementation group: 'com.mycompany', name: 'myproject', version:'1.0'
}
这种依赖关系管理是maven和gradle等构建工具的用途 做到这一点的最佳方法是向开发人员提供源代码,以便他们能够自己构建它!(也是最专业的,IMO)将所有依赖项“编译”到我的JAR中。这是最好的方法之一。其他开发人员不必担心其他库的版本。即使有这些库的任何新版本,您自己的类文件也知道要依赖哪个版本。或者更好的是,设置一个源代码存储库和一个工件存储库来保存JAR文件,等等,并允许其他团队访问存储库。@Sara-这是向非开发人员客户交付代码时的一个好方法。但是开发人员需要知道依赖关系是什么,并且(通常)有能力修补它们。访问源代码将使他们更容易调试代码并发现/报告代码中的错误!我建议在发布时遵循Oracle的做法。一个单独的jar用于实际类及其依赖项,另一个jar用于源文件。
plugins {
id 'maven-publish'
id "com.jfrog.artifactory" version "4.15.2"
}
artifactory {
contextUrl = "http://repo.mycompany.com/artifactory"
publish {
repository {
repoKey = 'libs-snapshot-local'
username = "${artifactory_user}"
password = "${artifactory_password}"
maven = true
}
defaults {
publications ('mavenJava')
}
}
}
publishing {
publications {
mavenJava(MavenPublication) {
groupId = 'com.mycompany'
artifactId = 'myproject'
version = '1.0'
from components.java
}
}
}
repositories {
maven {
url "http://repo.mycompany.com/artifactory"
}
}
dependencies {
implementation group: 'com.mycompany', name: 'myproject', version:'1.0'
}