gpt4 book ai didi

java - Maven 初学者问题 - 虽然项目设置有些复杂

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:00 25 4
gpt4 key购买 nike

所以我将自己归类为一个没有多少 Java 经验的高级开发人员。我正在开发一个小宠物项目,它基本上是一个带有插件的 sdk 的桌面应用程序,以及应用程序加载的一组插件,只要它们实现了 sdk 中定义的接口(interface)。它看起来像这样:

项目结构

main-app
|---pom.xml (depends on <sdk>)
|---src
|---[com.etc…]
|---target
|---main-app.jar (does this include sdk.jar?)


sdk
|---pom.xml
|---src
|---[com.etc…]
|---IPlugin (public interface IPlugin)
|---target
|---sdk.jar

(sdk - defines the interface that plugins need to implement)


plugins
|---plugin1
|---pom.xml (depends on <sdk>)
|---src
|---[com.etc…]
|---target
|---plugin1.jar

plugin1 is a plugin that implements IPlugin interface and has the following classpath
<com.foo.plugin1>

deploy
|---app.folder
|---main-app.jar
|---sdk.jar
|---plugins.folder
|---plugin1.jar


在应用程序启动时,main.app 解析 plugins.folder 并打开每个 jar 文件 - 在 list 中查找指定实现 IPlugin 接口(interface)的插件的类路径的元素。

有几个 maven/jar 概念我遇到了麻烦......

  • 我的部署文件夹目前是幻想的。它不存在。我没有知识让它存在。目前,我在每个子项目(或在 IntelliJ 中称为模块)中都有一个单独的 JAR 文件
  • main-app.jar 中是否必须包含 sdk 类?
  • 如果没有,我该如何部署 main-app.jar 以使其了解 sdk.jar,以及将 sdk.jar 放在哪里?
  • 有没有办法将自定义字段添加到plugin1 jar list 文件中,我可以在其中为主应用程序指定其类路径以将其与IPlugin接口(interface)关联?

到目前为止,我的 pom.xml 文件非常简单。它们基本上定义了 groupID、artifactID 和打包类型 (JAR) 及其依赖项。仅此而已。

目前主应用程序(无插件)在 IntelliJ 中成功构建并运行 - 但这对我的部署打包没有任何帮助。

编辑:

需要明确的是...main-app 和 sdk 在开发过程中构建和部署。 plugin1 由第三方添加到plugins.folder。第三方开发者如何使用maven在plugin.jar list 文件中指定他们的类路径?

最佳答案

如果 main_app 不是 Web 应用程序并且依赖于其他 jar,并且需要分发它,则一种方法是创建一个包含 main_app.jar 和依赖 jar 的程序集(例如 .zip 或 .tar.gz 文件)。 Maven Assembly Plugin可以帮助您做到这一点。

您可以使用 Maven Jar Plugin 进行 list 自定义

关于java - Maven 初学者问题 - 虽然项目设置有些复杂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4721487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com