在 BitBucket 存储库中托管可执行 .jar 文件或自动将 git 中的可执行 .jar 文件打包到本地文件夹中

Hosting executable .jar files in BitBucket repo or automate packaging executable .jar files from git into local folder

我正在尝试在 Java 中创建一个可以调用可执行 .jar 文件的启动器应用程序。一种简单的方法是在云实例中托管可执行的 .jar 文件,启动器应用程序只需从那里将 .jar 文件下载到用户的本地文件夹中。困境是缺少云服务或可以托管 jar 文件的服务器。

作为解决方法,我认为我可以将 jar 文件托管在 BitBucket 中,启动器应用程序将从中下载可执行文件。不过,我认为这有点不合常规,因为它主要用于对源代码进行版本控制(如果我错了,请纠正我)。另外,我不确定是否可以调用 FTP 或从那里下载文件(也许通过 BitBucket API,也许吧?)。

另一种选择是,可以让启动器应用从 git 存储库创建可执行 jar 文件,并将可执行 jar 文件包下载到用户文件夹并从那里调用。如果可能的话,我将不胜感激任何关于此选项的线索。

谢谢!

是的,您可以将二进制文件推送到 github(很难从 bitbuket 获取原始内容,您的请求需要进行身份验证和其他内容)。

这里是how to for that

也复制到这里以防 get 被删除。

How to create a maven repository for your github project step by step Clone your project in a separate folder (note: replace ORGANIZATION and PROJECT)

git clone git clone git@github.com:ORGANIZATION/PROJECT.git my-repository

cd into it cd my-repository

Create a new branch (here named repository) git branch repository

Switch to that branch git checkout repository

Remove all files rm -rf file1 file2 file3 .. etc

Install your jar in that directory (note: replace YOUR_GROUP, YOUR_ARTIFACT, YOUR_VERSION and YOUR_JAR_FILE)

mvn install:install-file -DgroupId=YOUR_GROUP -DartifactId=YOUR_ARTIFACT -Dversion=YOUR_VERSION -Dfile=YOUR_JAR_FILE -Dpackaging=jar -DgeneratePom=true -DlocalRepositoryPath=. -DcreateChecksum=true YOUR_JAR_FILE should point to an existent jar file, this is why it's best to create your repository branch in a different folder, so you can reference the existing jar in /your/project/path/target/artifact-x.y.z.jar

Add all generated files, commit and push git add -A . && git commit -m "released version X.Y.Z"

git push origin repository

Reference your jar from a different project The repository url you just created is > https://raw.github.com/YOUR_ORGANIZATION/YOUR_ARTIFACT/repository/

第二个选项也是一个很好的方法,因为您的用户将始终获得更新的内容,但这会增加构建时间,具体取决于您的用例。

一般来说,将构建产品存储在 Git 存储库中并不是一个好主意。通常构建的产品很大,压缩效果往往很差(尤其是 JAR 文件,它们已经被压缩),并且不需要进行版本控制。这正是您不希望 Git 存储库出现的行为。

虽然您确实可以这样做,但您可能会发现 Bitbucket 不想为此目的托管您的 Git 存储库,然后您将不得不寻找替代解决方案.您最好将这些资产托管在云存储桶中,甚至托管在静态服务器上并使用 HTTPS 下载。如果这无法实现,您需要考虑原因,并考虑解决它。

如果这些 JAR 文件是您已在 Bitbucket 上托管的软件版本的构建产品,那么为此目的使用 Bitbucket 的标准版本资产功能可能没问题。您只是不想使用 Git 存储库,它的服务成本明显高于静态资产。

您也不想使用 FTP,因为 (a) 它比 HTTPS 慢,并且 (b) 由于人们不遵守规范,不可能始终如一地使用 TLS。如果您在未进行完整性检查的情况下通过未加密的连接下载数据,然后执行该数据,您的软件将存在可利用的安全漏洞。