IntelliJ: 使用Docker JVM还是Docker Maven?

4
我有一个docker/jvm实例,我用它来编译和运行java代码。IntelliJ项目配置要求我指向文件系统上的jvm。
所以,我想知道,我能不能配置intellij来使用这个docker容器?我想我可以配置一个docker容器,让它保持运行状态,并挂载/共享它的文件系统,但我不想这样做——我想使用我的短暂容器实例。
我对使用maven也有同样的想法——我能否在intellij内部使用docker实例的maven而无需挂载文件系统?再次提到,intellij似乎要求指向maven的文件系统位置,因此这似乎是有问题的。
是否有人知道这是否可能,或如何配置这样的事情?

请问您是否找到了解决方案?我也在Docker中使用Java和Maven。我找不到一种方法来配置IntelliJ以使用JDK :( - Geoff L.
我转移到了Visual Studio Code。 - Software Engineer
2个回答

2
如果您正在使用 POSIX 系统,您可以创建一个简单的可执行的 shell 脚本,该脚本接受命令行参数并将其转发到:
docker exec [OPTIONS] CONTAINER COMMAND [ARGS...]

这甚至可以在Windows上使用批处理文件实现。
一个问题是当你需要传递文件路径时。一种解决方法是将工作目录挂载到容器中与主机相同的路径上。
如果你选择使用shell脚本,请不要忘记shebang
在Windows上,可以使用类似以下方式的批处理文件来“unixify”文件路径:
set FILEPATH=%FILEPATH:C:=/c%
set FILEPATH=%FILEPATH:\=/% 

我已经尝试过这个方法——它仍然需要主机安装Java(和Maven),这正是我想避免的。我希望我的开发人员只需安装Docker,这样我就可以拥有一个开发环境的单一定义和单一升级点。不过这是个好答案,所以+1。 - Software Engineer

2
再次提醒,Intellij似乎需要指向Maven文件系统位置的指针,因此这似乎是有问题的。
应用程序使用另一个容器化应用程序的唯一方法是该应用程序本身位于同一容器中(或从另一个容器挂载数据卷,避免直接挂载本地文件系统)。
因此,使用像dlsniper/docker-intellij/这样的东西(用于go,但很容易适应Java)将起作用,并允许IntelliJ容器:
- 共享X11套接字以在主机桌面上查看容器化应用程序, - 使用数据卷(再次,不直接挂载本地文件系统):
- jvm的数据卷 - Java源代码的数据卷

我正在尝试构建一个开发环境,开发人员只需安装Docker即可。我还试图利用最少的资源来节省能源。目前看来,我能做的最好的就是按照这里概述的步骤,并与IntelliJ讨论未来(以及它已经到来的事实)。 - Software Engineer
@EngineerDollery 确实。我希望JetBrains自己能够提供一个可用的IntelliJ IDEA Docker镜像。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接