繁体   English   中英

Intellij&Gradle模块文件名

[英]Intellij & Gradle module file name

我正在尝试将现有项目转移到ant之上。 我正在使用Intellij 13,并且通过删除iml文件设法使一个模块在gradle下运行。 但是,它坚持要编写一个名称与目录名而不是模块名匹配的iml文件。

我认识到,对于单独工作或在大公司中单独工作或在一个团队中工作的人们来说,这可能不是问题,因为IDE和版本是从头开始的。 但是,该项目涉及多家公司的承包商,这些承包商都提供自己的IDE。 Intellij的许可模型使向外部承包商提供IDE变得不切实际,因为大多数工作都是在现场完成的,一旦颁发,就无法取回或取消对许可密钥的授权。

由于Intellij的升级不是免费的,因此几乎不可能协调所有人一次升级,因此我使用基于文件的项目格式,其中包含一个名为ourproject.ij12.ipr1的项目文件,另一个名为ourproject.ij13.ipr的项目文件,以及用于foo目录中的模块是foo.ij12.imlfoo.ij13.iml

这非常有效,并且政策是每个人都必须有14个才能退出12个,这样我们就不会获得无限数量的版本,但是我们也不必同步升级。

不幸的是,当我尝试在intellij的foo目录中使用build.gradle时,它会写foo.iml ,这完全违反了上述约定。 此外,它添加了另一个模块(不询问),并导致同一目录中的两个模块,并且ide不允许您更改其中一个,因为同一目录中的两个模块是错误的。

谁能告诉我使用gradle时如何影响Intellij为iml文件编写的文件名? 显然,除非我对symlinks和ant.symlinks任务非常详细,否则拥有单独的目录名是不行的,如果有人尝试在Windows上本机运行它,那将行不通。

编辑:由于人们似乎习惯于删除他们无法接受的答案,所以让我澄清一下。 我知道gradle想法eclipse插件。 我不是在要求IDE不可知论的指南。 我发现IDE设置中有有价值的东西,并希望使用同一IDE在其他设置中共享它们(其中“相同”包括版本,不希望跨版本共享,但一次可以有多个版本)。

更具体地说,我正在寻找以下之一:

  • 一种配置或技巧,使我可以控制iml文件的文件名
  • 维护两个版本的ide文件的另一种方法,就是不太拜占庭。
  • 来自参与SO的JetBrains成员之一的确认,即IDEA无法再实现我的目标。

EDIT2:涉及gradle生成文件的解决方案将无法工作。 Intellij 13 更改文件名以匹配目录名而不是模块名,这是问题的根源。 我需要一个可以说服Intellij不要这样做的解决方案。 升级到13之前我没有任何问题。

使用idea插件,我能够基于命令行参数为我生成两个iml文件。 这是我创建的(最小) build.gradle文件

apply plugin: 'java'
apply plugin: 'idea'

def imlName = name + (hasProperty('generate12') ? '.ij12' : '.ij13')

idea {
    module {
    name = imlName
    }
}

默认情况下,此脚本将为您生成一个“ 13”文件。 因此,要进行更改,您将需要设置generate12属性。

我运行的命令:

> gradle idea
> gradle idea -Pgenerate12=true
> ls
  build.gradle  test.ij12.iml test.ij13.iml test.ipr test.iws

想法模块文档可能为您提供了更多有用的信息。

旁注:我认为最好是将没有iml文件的项目提供给所有人,并告诉他们运行gradle idea (不使用自定义iml名称的东西)来创建文件。 这将使您不必维护将被IntelliJ修改和覆盖的文件。 我们检入iml文件,当有人检入某些东西并将其破坏给所有人时,它只会导致问题。

使用settings.gradle文件更改模块名称。 Intellij应该使用它。 接下来,您可以使用gradle.properties设置前缀。

例如setting.gradle:

rootProject.name = adjustName("ourproject")

include "someProject"
// ... other includes

rootProject.children.each{ it.name=adjustName(it.name)}

String adjustName(String name) {
    String pref = System.properties['myIdeaVersionPrefix']
    return pref != null ? name + "." + pref : name
}

gradle.properties:

systemProp.myIdeaVersionPrefix=ij13

有关配置的屏幕截图,请参见http://i.stack.imgur.com/CH2Bv.png

似乎没有一个很好的答案。 我已将其作为错误提交到YouTrack http://youtrack.jetbrains.com/issue/IDEA-119625中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM