(首发地址:学习日记 JAVA 生物信息软件 Flux Simulator、Astalavista、Flux Capacitor 源码临时修复及编译 – 学习日记)
今天分享一套依赖破坏的开源 JAVA 生物信息软件 Barna 项目的临时修复及编译。这套软件包括:Flux Simulator、Astalavista、Flux Capacitor,主页地址:Sammeth.net - Home - Confluence。在我接触到这套软件的2021年底,这套软件的源代码还可以通过一定的变通方法从 git 仓库下载到。不过却根本无法编译通过,因为其依赖的网络上的各种包和文件链接失效。但是,我发现现在已经无法从 git 仓库下载源码了。所幸,我当初下载的源码还在。于是,我将原来下载的源码和修复上传到 github( GitHub - learndiary/barna-df: A dirty fix of Flux Simulator, Astalavista and Flux Capacitor of Barna project on "https://confluence.sammeth.net/". )。这里,借此软件的修复,小结一下 JAVA Gradle 编译软件依赖包的修复。视频演示地址:https://www.bilibili.com/video/BV12V4y1p7Ec?share_source=copy_web&vd_source=d1925b070926f23b2b6676137251e9ea
JAVA 生物信息软件 Flux Simulator、Astalavista、Flux Capacitor 源码临时修复及编译
一、软件概况
经查,可以使用 conda 上安装上面三个软件之二,命令如下:
conda install -c bioconda flux-simulator astalavista
Conda 仓库里的最新版本分别是 1.2.1 和 4.0。Conda 里面没有 Flux Capacitor 提供。
从源码的 git log 信息来看,最近的更新是 2016年8月16日。
从种种迹象看,这套软件当前的趋势应该逐渐退出历史舞台。所以,当前还在使用这套软件的普通用户应该考虑其它的替代软件了。当然,如果有实力的用户,可以考虑在这套软件的基础上自己开发。
二、源码修复
准确的说,是对源码依赖的网络无效仓库的修复,对代码本身未作任何变动。主要作了如下变动:
1、依赖仓库修复
在“build.gradle”中,把:
maven {
url "http://artifactory.sammeth.net/artifactory/repo"
}
和
maven { url 'http://repo.jfrog.org/artifactory/gradle-plugins' }
换成
maven { url "https://repo1.maven.org/maven2/" }
maven { url "https://plugins.gradle.org/m2/" }
maven { url "http://hadoop-bam.sourceforge.net/maven/" }
maven { url "https://maven.aliyun.com/repository/public" }
把:
apply plugin: 'artifactory'
删掉。
在“gradle/wrapper/gradle-wrapper.properties”中,把:
distributionUrl=http\://services.gradle.org/distributions/gradle-1.2-bin.zip
中的“http”换成“https”。
2、软件包版本修复
在“barna.simulator/build.gradle”,把:
compile "jdbm:jdbm:2.3"
中失效的版本号“2.3”换成“2.4”
在“build.gradle”中,把:
classpath(group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '2.0.12')
中失效的版本号“2.0.12”换成“2.2.5”
3、缺失依赖包修复
有些网络仓库中找不到的依赖包,可以在网上非仓库的资源中搜索,下载到本地修复。
在“barna.astalavista/build.gradle”中,把:
compile 'sTASSEL:sTASSEL:1.0'
compile 'ledatastream:ledatastream:1.0'
换成:
compile files('../patch/libs/sTASSEL-3.0.174.jar')
compile files('../patch/libs/apktool-lib-1.4.4-3.jar')
下面的依赖包仓库("http://hadoop-bam.sourceforge.net/maven/" )不太稳定,也下载到本地修复。
在“barna.commons/build.gradle”中,把:
compile 'net.sf.samtools:samtools:1.79'
换成:
compile files('../patch/libs/samtools-1.93.jar')
三、编译安装
1、系统要求
以下操作在 Deepin 20.6 Linux 下进行,因为 JAVA 的跨平台特性,其它 Linux 发行版和操作系统应该也行。需要完整 JAVA JDK 1.7 或 1.8,必须有 java 和 javac 命令,检查:java -version 和 javac -version 会输出相应版本信息。这里使用仓库里的 openjdk-8-jdk,安装命令:sudo apt install openjdk-8-jdk。再设置环境变量 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
2、源码下载
在2021年底,还可以通过下列步骤下载到源码,不过现在(2022.08.16)好像已经下载不到了。
git config --global core.compression 0
git clone --depth 1 http://bitbucket.sammeth.net/scm/barna/barna.git
cd barna
git fetch --unshallow
git pull --all
现在可以从我上传到 github 或者 gitee 镜像的临时修复仓库中下载源码。
git clone https://github.com/learndiary/barna-df.git
或者:
git clone https://gitee.com/learndiary/barna-df.git
3、进入源码目录
cd barna-df
里面除了 patch 目录是我用于修复依赖包和更新的 README.txt 文件外,其余文件均保存原来的 barna 项目不变。
4、应用修改源码补丁
patch -p1 < patch/barna-df.patch
5、编译
for d in simulator astalavista capacitor; do cd barna.${d}; ../gradlew dist; cd ..; done
编译的结果是各自生成 tgz 和 zip 两种格式的压缩包,使用命令查看结果:
for d in simulator astalavista capacitor; do ls barna.${d}/build/distributions; done
6、使用
把上面编译成的压缩包任选一种格式的解压,进入里面的 bin 目录,Windows 下执行后缀 .bat 的那个文件,Linux 下执行没有后缀的那个文件即可。如 flux-simulator,执行示例如下:
cd barna.simulator/build/distributions
tar -xf flux-simulator-1.2.3.tgz
cd flux-simulator-1.2.3/bin
./flux-simulator --version
示例显示结果如下:
[INFO] Flux-Simulator v1.2.3 (Flux Library: 1.30)
Flux-Simulator
Version 1.2.3
Barna Library 1.30
-----------------------------------------------
Build Date Sun Aug 21 10:59:12 CST 2022
Build Version 22fc00071cadaae30d4327ac5d183b0eab2b68ce
Build Branch
其余两个软件方法一样。
四、注意事项
本人并非使用这种软件的专业人士,也非专业的 JAVA 开发人员,各位在安装使用的过程中有任何问题,欢迎交流、批评和指正。
五、参考链接
1、阿里云Maven中央仓库使用指南 https://developer.aliyun.com/mvn/guide
2、JAVA jar 文件搜索 http://www.java2s.com/Code/Jar/CatalogJar.htm