如何将JAR添加到Jetbrains MPS项目
Jetbrains MPS是創建DSL的絕佳工具。 我們喜歡它,并在我們的咨詢工作中定期使用它。 因此,我們之前已經寫過關于Jetbrains MPS的文章 。
作為投影編輯器,您可以輕松創建可通過圖形界面或數學公式之類使用的DSL。 盡管所有這些功能都需要做一些準備工作。
MPS的最重要特征之一是它允許重用Java代碼。 可以通過稱為BaseLanguage的 MPS編寫新的Java代碼。 但是,有時我們只想在MPS中重用現有的Java代碼。
在本教程中,我們將看到:
首先,我們將看到如何創建一個包含資源的新JAR,然后如何在Jetbrains MPS中加載現有的JAR。
您可以在配套存儲庫中找到該項目的源代碼。
創建一個包含靜態資源的JAR
我們將使用腳本gradle來創建JAR,因為它更方便且易于自動化,但是顯然您可以按照自己喜歡的方式進行操作。
該項目的結構是傳統的Java結構,具有resources和src目錄。
gradle項目很簡單,我們要做的就是創建具有以下內容的build.gradle文件。
apply plugin: 'java'sourceSets.main.resources.srcDirs = [ "resources/" ] sourceSets.main.resources.includes = [ "**/*.png", "**/*.gif" ]我們所做的只是指示在哪里找到資源以及要包含的文件,在本例中為圖標的圖像文件。
Java類同樣也很簡單,我們將圖標作為靜態字段進行訪問。
package com.strumenta.examples.icons;import javax.swing.*;public class ExamplesIcons {public static final ImageIcon MAIN;public static final ImageIcon CIRCLE; static {MAIN = createImageIcon("/com/strumenta/examples/icons/main.png", "Main Icon");CIRCLE = createImageIcon("/com/strumenta/examples/icons/circle.png", "Circle Icon");}private static ImageIcon createImageIcon(String path, String description) {java.net.URL imgURL = ExamplesIcons.class.getResource(path);if (imgURL != null) {return new ImageIcon(imgURL, description);} else {System.err.println("Icon not loaded: " + path);return null;}} }由于我們正在構建圖標,因此需要導入適當的Javax Swing依賴項。
現在,我們進入gradle項目的主目錄并進行構建。
# Linux/Mac OS/Cygwin ./gradlew jar # Windows ./gradlew.bat jar最終結果應該是build/libs/目錄下的resources_project.jar 。
MPS項目
現在我們有了帶有圖標的JAR,我們必須使MPS代碼可以訪問它。 您可以對任何現有的JAR代碼使用相同的過程。
我們更喜歡在自己的解決方案中導入靜態資源,因為它可以使項目更清潔。 因此,我們首先創建一個名為com.strumenta.examples.external的解決方案,該解決方案將生成一個具有該名稱的目錄和一個具有相同名稱的.msd文件。 在該目錄內還將有一個models目錄。 在com.strumenta.examples.external目錄內,我們手動添加一個libs目錄,并帶有resources_project.jar 。
我們仍然必須通過轉到模塊屬性( Alt + Enter )將生成的庫添加到模塊:
如果您的庫需要第三方Java代碼,則應針對依賴項執行步驟2和3。 在我們的案例中,我們確實使用了第三方代碼(Javax Swing),但這是已經包含的JDK平臺的一部分。 因此,我們無需執行其他任何操作。
在現實世界中,問題在于可能存在很多依賴關系,尤其是對于復雜項目。 因此,您可能希望首先使用標準工具(例如gradle或maven)收集所有依賴項,然后將其插入MPS。
如果現在打開ExampleIcons文件,則應該看到類似于下圖的內容。
如果您在ExamplesIcons中看到一些錯誤,則可能是您添加了錯誤的順序。 您必須首先添加JDK模塊,以便MPS可以自動添加所需的內容。 為了確認一切正常,您還可以查看icons@java_stub model的Model Properties,它應該已經自動包含Java和Javax.Swing在其依賴項之間切換(您不能手動添加它們)。
要測試包含,您可以使用MPS控制臺。 使用CTRL + M包含外部解決方案,然后嘗試使用指令ExamplesIcons.MAIN.getDescription()進行命令printText ,如下圖所示。 然后按執行按鈕:tt應該打印“ Main Icon”
基本上就是這樣,您只需要記住在使用JAR中包含的代碼的每個模塊中都包含com.strumenta.examples.external模塊作為依賴項。 如果要使用插件或模擬器中的資源,則可能需要將其添加為運行時依賴項。
在構建模型中包含JAR
如果生成MPS的插件或自定義版本,則將使用構建模型。 在這種情況下,您應該在那些構建模型中添加JAR。
例如,如果生成插件,則必須將JAR復制到插件目錄中,如下圖所示。
如果您忘記這樣做,則在嘗試生成與插件構建相關的模型時會收到錯誤消息。
翻譯自: https://www.javacodegeeks.com/2018/01/add-jars-jetbrains-mps-project.html
總結
以上是生活随笔為你收集整理的如何将JAR添加到Jetbrains MPS项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股票期权备案登记(股票期权备案)
- 下一篇: WildFly Kubernetes e