Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Intellij在哪里存储有关为模块配置哪些内容根的数据?_Java_Eclipse_Git_Intellij Idea - Fatal编程技术网

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

Java Intellij在哪里存储有关为模块配置哪些内容根的数据?,java,eclipse,git,intellij-idea,Java,Eclipse,Git,Intellij Idea,如果我转到Intellij中的“项目结构”菜单,选择一个模块并转到“源”选项卡,我就能够将内容根添加到项目位置之外的模块中 我希望找到的是intellij存储此设置的位置。我想象在某个地方有一个xml文件,它描述了为一个模块设置的内容根,但我一生都找不到它 一些背景: 我试图解决的问题是,我现在正在处理的项目非常大,结构非常奇怪(想想与目录结构不匹配的包名),并且是使用makefile编译的。由于这个原因(可能还有其他一些我还没有解决的原因),如果我只是从现有的源代码中导入源代码作为新项目,In

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

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

一些背景:

我试图解决的问题是,我现在正在处理的项目非常大,结构非常奇怪(想想与目录结构不匹配的包名),并且是使用makefile编译的。由于这个原因(可能还有其他一些我还没有解决的原因),如果我只是从现有的源代码中导入源代码作为新项目,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并提交并推送到该repo。这意味着,我无法设置这个项目一次,让它单独,只是切换分支,我将需要创建一个新的项目,每次我需要切换回购

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

我希望能够通过使用sed命令(或类似命令)来修改指定的内容根的路径,从而能够继续使用Intellij,而不必使用Eclipse。考虑到创建了40个左右的模块,每次切换repos时手动执行任务太耗时了


如果有任何指向正确方向的建议,或者有任何其他可能用来解决这个问题的建议,我将不胜感激。谢谢

如果我理解正确,您需要设置项目的源文件夹。这将进入项目附带的.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>


嘿,谢谢你的回复。这正是我所期望的.imls的样子,但由于某些原因,它们看起来更像这样
,我认为这可能与从Eclipse导入它有关。。这是其中一个模块的整个iml文件,但它确实给了我一个想法。也许我可以手动创建我的模块,以便从正确的位置匹配Eclipse中的模块,然后使用sed命令更改iml文件。在手动添加内容根目录后,是否尝试查看.iml?IntelliJ是否创建了我提到的部分?是的,它来自于我添加了根的.iml。我不完全确定从eclipse导入时发生了什么。这个项目太疯狂了。哈哈。是的,我以前从没听说过这样的项目。您可以浏览一下.idea/modules.xml(或.ipr文件),它存储关于项目的配置,并查找eclipse类路径。