引用自:senbox.atlassian.net/wiki/spaces…
1、环境准备
(1)Java JDK,最新版的SNAP将JDK升级到了11,老版本可以使用8,OpenJDK也可以,二者之间的比较可以参看devexperts.com/blog/oracle…,官方推荐使用Liberica JDK,下载链接:Download OpenJDK Builds for Linux, Windows & macOS (bell-sw.com)。
(2)Maven,3.2.5或以上,官方推荐3.9.2。
(3)Git
2、下载源代码
SNAP相关的所有代码,都发布在GitHub中,链接为:github.com/senbox-org/,必备的存储库包括snap-engine和snap-desktop。建议将下载的源代码统一存放在单独的文件夹中,例如snap。
cd
mkdir snap
cd snap
git clone https://github.com/senbox-org/snap-engine.git
cd snap-engine
mvn clean install
cd ..
git clone https://github.com/senbox-org/snap-desktop.git
cd snap-desktop
mvn clean install
也可以下载并学习snap-examples project,里面有些有价值的例子。
3、在IDEA中导入源代码
(1)打开IDEA,点击File→New→Project from Existing Sources,也可以在欢迎页面中选择Import Project。
(2)在弹出的对话框中选择snap engine源代码所在文件夹,注意将Import project from external model和Maven两个选项选中,其他保持默认值即可。
(3)点击File→New→Module from Existing Sources,选择snap desktop文件夹,其余选项保持默认值。
(4)如果想要导入其他项目,重复上一步操作。
(5)点击File→Project Structure,设置SDK为Java 11,Language Level为:11 - Local variable syntax for lambda parameters,点击确定。
(6)在界面右侧的Maven Projects标签中,可以看到IDEA已经正确识别Maven相关的项目列表。
可点击Maven面板右上方的选项按钮,选中Group Modules,将项目按Module进行组织并显示。
4、在IDEA中编译
(1)在Maven面板中,按照SNAP Engine Project、SNAP Desktop Project、其余Module的顺序,逐个展开项目下面的Lifecycle,按次序右键选择clean和install,并点击Run Maven Build,对项目进行编译。
(2)编译过程中如果出现错误,可尝试点击Maven面板中的第三个按钮,选择Download Sources and Documentation,下载Maven中依赖的各种环境。
(3)由于Maven中很多源都在国外,下载速度极慢且容易断线,出现各种错误,可为IDEA中的Maven增加国内阿里云镜像
如图,右键点击pom文件 maven——open ‘setting.xml’(若setting.xml不存在,则create ‘setting.xml’)
然后,把镜像配置到如图所示位置
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
保存,退出,重启IDEA,即大功告成 。
5、运行编译好的SNAP
为了正确运行编译成功的SNAP,需要对项目进行配置,方式为:
(1)点击Run→Edit Configurations,添加一个Application类型的配置项。
(2)在弹出的界面中进行如下配置:
下面配置参数中,是/snap/snap-desktop/snap-application/target/snap的缩写
Main class: org.esa.snap.nbexec.Launcher
VM options: -Dsun.java2d.noddraw=true -Dsun.awt.nopixfmt=true -Dsun.java2d.dpiaware=false -Dorg.netbeans.level=INFO -Dsnap.debug=true -Xmx4G
Program arguments: --userdir "/../userdir" --patches "/snap/snap-engine/$/target/classes"
Working directory:
Use classpath of module: snap-main
(3)加入Toolboxes运行SNAP
为了能够将哨兵一号、哨兵二号等Toolboxes加入到框架中运行,需要对Configuration进行配置,上面的配置可以作为模板参考。具体如下:
扩展--patches选项,令其包含编译成功后的Toolboxes。
--patches "/snap/snap-engine/$/target/classes;
/snap/microwave-toolbox/$/target/classes;
/snap/microwave-toolbox/rstb/$/target/classes;
/snap/microwave-toolbox/jlinda/$/target/classes;
/snap/optical-toolbox/$/target/classes"
同时,需要补充--clusters参数,该参数包含了需要加载的所有模块。
--clusters "/snap/microwave-toolbox/microwavetbx-kit/target/netbeans_clusters/microwavetbx;
/snap/microwave-toolbox/microwavetbx-kit/target/netbeans_clusters/rstb;
/snap/optical-toolbox/opttbx-kit/target/netbeans_clusters/opttbx"
IDEA支持多个启动项的配置,只需要为不同的Configuration命名不同的Name即可。