gpt4 book ai didi

java - Intellij 在哪里存储有关为模块配置哪些内容根的数据?

转载 作者:太空狗 更新时间:2023-10-29 14:18:28 26 4
gpt4 key购买 nike

如果我转到 Intellij 中的项目结构菜单,选择一个模块并转到源选项卡,我可以将内容根添加到项目位置之外的模块。

我希望找到的是 intellij 存储此设置的位置。我想象某处有一个 xml 文件,它描述了为模块设置的内容根,但我终究找不到它。

一些背景:

我试图解决的问题是,我现在正在处理的项目非常庞大且结构非常奇怪(认为与目录结构不匹配的包名称)并且是使用 Makefiles 编译的。因此(可能还有一些我还没有解决的其他原因)如果我只是从现有源中将源作为新项目导入,Intellij 无法找到大部分类。

该项目的大多数其他开发人员结合使用命令行和 vim,但是有一个开发人员使用 Eclipse。该开发人员编写了一个工具,可以从源代码创建多个 Eclipse 项目(大约 40 个),并使用 Eclipse 提供的 LinkedResources 功能,能够将其链接回原始源位置,而无需将任何内容放入存储库。

我能够将此 eclipse 项目导入 Intellij,但 Intellij 无法翻译或理解 LinkedResources 的概念,因此在 Intellij 中创建的模块和包是空的,但它已设法找到 .class 文件和反编译它们(我假设是因为 Eclipse .classpath 文件),所以我可以看到每个 Eclipse 项目的反编译类(在我的 Intellij 项目中创建为模块)。如果我随后手动浏览模块并添加与 Eclipse .project 文件中 LinkedResource 标记中指定的路径相匹配的内容根目录,那么我就能够找到实际的 .java 文件并对其进行编辑。太棒了!

问题的第二部分源于围绕使用 git 的公司流程。我工作的公司没有使用分支来进行新功能工作,而是使用克隆的存储库来进行功能工作。所以这意味着当我开始一项新工作时,我需要在托管 git 的服务器上克隆 repo,然后在本地克隆它并提交并推送到该 repo。这意味着我无法设置这个项目一次就不管它,只是在分支之间切换,每次我需要切换 repos 时我都需要重新创建项目。

Eclipse 项目通过使用带有 sed 命令的脚本来解决这个问题,在 .project 文件中的 LinkedResources 标签中查找和替换正确的文件路径,以在您想要处理不同的功能时指向不同的存储库,然后 Eclipse 更新和指向新文件,当您编辑文件时,您正在编辑新的远程位置。

我希望能够通过使用 sed 命令(或类似命令)修改指定内容根目录的路径来复制它,这样我就可以继续使用 Intellij 而不必使用 Eclipse。鉴于创建了 40 个左右的模块,每次切换存储库时手动执行一项任务太耗时了。

我将不胜感激任何指向正确方向的指示,或任何其他可用于解决此问题的建议。谢谢!

最佳答案

如果我没理解错的话,您需要设置项目的源文件夹。它进入项目附带的 .iml(模块文件)。在该 XML 文件中查找路径 module.component.content

例如,一个非常规则的模块将遵循以下结构:

<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />

<!-- This is what you're looking for -->
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
<excludeFolder url="file://$MODULE_DIR$/../jaxrs-container-api/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: javax.ws.rs:javax.ws.rs-api:2.0.1" level="project" />
</component>
</module>

关于java - Intellij 在哪里存储有关为模块配置哪些内容根的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32632864/

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