服务热线:010-62964229
格瑞纳根植于教育行业,让仿真软件从理论教学到应用实践
新闻资讯
当前位置:首页 > 新闻资讯 > 行业新闻
建模技巧 | 使用Maven为AnyLogic管理外部依赖项
2022-07-29 09:07:08 发布人:admin 阅读 1860

本文分享了由Guilherme Coelho编写的关于AnyLogic的使用实践技巧,希望能为正在学习或使用AnyLogic的用户提供帮助。

原文:https://www.theanylogicmodeler.com/post/template-how-to-write-a-tips-blog-post

作者:Guilherme Coelho

更新:Mar 9, 2022

阅读时间:6 min

本文是Guilherme Coelho的一篇特邀博客,主要关于如何设置Maven以管理和准备与Anylogic一起使用的外部依赖项的教程。

先决条件:本文介绍了Java编程、AnyLogic及其依赖管理的一些高级方面。在这之前,请确保您了解如何向AnyLogic添加和导入外部依赖项。

尽管AnyLogic提供了一系列工具来构建仿真模型,但您可能需要使用一些非常特定的库来进行矩阵计算、优化车辆路线,甚至需要连接一些外部求解器才可以在仿真期间执行决策。

如果涉及到这一点,人们可能只想下载JAR文件并将其放置到模型根文件夹中,之后按照 AnyLogic帮助中的说明将其添加到AnyLogic模型依赖项列表中。尽管它对于非常小的项目来说效果很好,但随着项目规模和复杂性的增加,这会变得非常麻烦。


gif


软件开发中的最佳实践是使用一些依赖关系管理工具来处理整个过程。这种工具负责确保我们在构建或安装正在开发的软件之前,自动获得所有必要依赖项的正确版本。


在没有这些工具的情况下,最坏的情况是我们可能需要手动下载项目的所有依赖项以及依赖项的依赖项,其中不必要的文件将占用项目存储库。

由于AnyLogic使用Java作为编程语言,我将介绍如何设置Maven来进行依赖关系管理。Maven是Java世界中最受欢迎的依赖关系管理工具之一。

此外,我们将使用AnyLogic中提供的“External JAR files”模型。您可以在这里找到它:Example Models > Models from 'The Big Book of Simulation' > Java for Anylogic users.


该模型的目的是教我们如何将Jama线性代数包添加到模型中并执行矩阵乘法。

初始设置

在我们真正开始之前,请确保您已经安装好所有内容并准备就绪。因此,请遵循以下步骤:

1、 下载并安装Java Development Kit(JDK),并确保对应地设置JAVA_HOME和 PATH 环境变量。

在Windows上

打开系统属性(Win+Pause),选择“高级(Advanced)”选项卡和“环境变量(Environment Variables)”按钮。在顶部,您将看到与用户相关的所有环境变量。添加一个名为JAVA_HOME的新变量,并将其指向JDK安装路径。最后,确保PATH变量也指向JDK的bin文件夹。


在Mac上

可参考下方页面配置Mac的环境。

2、下载并安装Maven。要安装它,请将其内容解压缩到计算机上,并以与之前相同的方式将bin文件夹添加到PATH变量。

创建Maven项目

一切就绪后,我们可以继续创建一个新的Maven。接下来的步骤可以在任何支持Java和Maven的IDE上完成,例如VScode或IntelliJ。

在本文中,我们将使用VScode,因此请确保您已经安装了它。从VScode Extensions选项卡中搜索并安装“Maven for Java”扩展。


接下来,打开命令选项板并查找“Maven:Create Maven Project”命令。这将提示一些用户输入:

  1. 选择项目的原型。我们建议选择最简单的一个,例如“maven-archetype-quickstart”。
  2. 选择最新的原型版本。
  3. 定义项目的group Idgroup Id 有点像软件包命名空间。
  4. 定义artifact Idartifact Id 应该是模型的名称。它还将是将为项目创建的文件夹的名称。
  5. 选择项目文件夹的放置位置。
  6. [ 在CLI上 ] 输入项目的版本,点击“Y”确认所有定义并完成项目创建向导。

用VScode打开创建的文件夹。里面有一个“src”文件夹和“pom.xml”文件。


我们不需要“src”文件夹,因为我们没有在AnyLogic之外构建任何东西,所以只需删除它。

设置配置文件

在POM文件中,找到部分。在这里,您必须添加项目的所有依赖项。在我们的例子中,我们只需要添加以下内容:

<dependency>

<groupId>gov.nist.math</groupId>

<artifactId>jama</artifactId>

<version>1.0.2</version>

</dependency>



实际上,截至2022年3月,该软件包已更新。如果您想更新到最新版本,只需在部分将1.0.2更改为1.0.3即可。



      maven-dependency-plugin
      
              install
              
                  copy-dependencies
              
              
                  ${basedir}/libs
   
  ...

这样,所有依赖项都将被放置在一个名为“libs”的新文件夹中,该文件夹将位于项目根目录中。您还可以通过更改部分来更改目标文件夹

注意:如果您选择保留“src”文件夹,请确保不要从部分删除junit,否则接下来的步骤将不会成功。

提取依赖项

一切就绪后,剩下要做的就是命令Maven拉取依赖项并将它们放在正确的位置。为此,只需在CLI上运行命令:

mvn clean install

此命令将确保在新的安装过程之前删除所有以前的构建目录。下载所有内容可能需要一些时间,只需等待几秒钟,传递即可完成。

如果一切正常,您应该会看到下面这样的消息,以及在项目目录中创建的名为“libs”的新文件夹,其中包含名称为“jama-1.0.2.jar”的文件。


每次添加新的依赖项或者希望使用某些依赖项的较新版本时,都需要运行此程序。最棒的是,您不需要担心您使用的某个库的最新版本是否依赖于其他库。Maven通过自动包含可传递的依赖项,避免了发现和指定您自己的依赖项所需的库的需要。这是专业和高级软件开发人员(和仿真建模人员)使用它的关键原因。

最后...返回AnyLogic

回到AnyLogic“External JAR files”模型,我们需要用刚刚下载的依赖项替换Jama依赖项。为此,首先删除前一个依赖项,之后在“libs”文件夹中添加一个指向JAR文件的新依赖项。浏览文件位置,检查所需选项以从其原始位置访问它,并选择“使用相对路径”选项。


单击“构建模型”按钮检查是否一切正常。此时,您将能够运行您的模型,而不会出现任何问题。

祝贺!

gif

总结

请记住,此解决方案不一定适合您的项目。如果您正处于模型开发的开始阶段,您可能会跳过所有这些步骤而不会产生任何影响。然而,如果您的模型扩展,或者您必须通过自动化方式运行它,则需要用到这个方法。

对于同一个问题,总有其他解决方案。您只需要平衡每种方法的利弊。

最后,为了让每个人都更轻松,我准备了一个Github 存储库,其中包含本文所涵盖的所有内容。

  电话:010-62964229
  邮箱:support@carila.cn
  地址:北京市海淀区上地信息产业基地三街3号楼1门4层401
©2021 北京格瑞纳电子产品有限公司 版权所有 京ICP备19024141号 京公网安备 11010802029095号
 
QQ在线咨询
点击这里给我发消息 点击这里给我发消息
服务热线
010-62964229
E-mail
support@
carila.cn
地址:北京市海
淀区上地信息产
业基地三街3号