是否有一种简单的方法可以重新排列项目中所有* .java文件的导入?
所以例如:
import java.util.Calendar;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
会变成
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
我们有大约200个源文件,他们需要在订单中进行导入。
最好的方法是什么?我对perl / python / groovy脚本持开放态度......
答案 0 :(得分:8)
在Eclipse中,在Package Explorer中,右键单击项目的顶级包。选择来源>为项目中的所有文件组织Imports,您已完成。
答案 1 :(得分:2)
eclipse可以帮助您组织项目的导入。
转到源/清理..然后使用配置按钮。这将打开一个过滤的首选项对话框。点击enable project specific settings
,然后点击edit
按钮。将顶部的个人资料名称更改为“组织导入”等描述性内容,然后转到code organizing
标签。选择organize imports
复选框。您可以浏览其余选项卡并取消选择其他选项。保存所有内容后,请返回clean up...
对话框,然后点击finish
。
修改强>
如果您正在使用eclipse路线,请不要忘记您可以根据需要订购导入(com之前的组织等),以及设置“需要之前的导入数量。*”属性。
答案 2 :(得分:2)
Netbeans 6.5.1:Ctrl + Shift + I
答案 3 :(得分:1)
Eclipse有一个开箱即用的选项(Ctrl + Shift + O)。但它可能不容易在很多文件上自动化。
答案 4 :(得分:1)
我认为它们中的任何一个都不能完美运行,因此请务必查看限制。
答案 5 :(得分:1)
在Intellij IDEA中,您可以在设置 - >代码样式 - >导入上设置首选项,然后通过指向项目视图中的目录并选择代码>优化导入来优化项目的导入。
对于问你为什么要这样做的人来说,看看导入可以给你一个给定类的依赖关系的第一个近似值,特别是关于第三方罐子(你可以拿起它们被使用,然后关注他们记录的依赖关系)。有时这很有用,所以你可能想让它们井然有序。但总的来说,我同意,通常不需要关心。
答案 6 :(得分:1)
鉴于您实际上问了这个问题,我假设您没有使用IDE进行编码。如果您使用的是vi,还可以使用内置的行排序功能按字母顺序对导入进行排序。
答案 7 :(得分:1)
遇到问题时,我使用了gawk脚本:
#!/usr/bin/gawk -f
BEGIN {
importing=0;
}
/^import/ {
importing=1;
switch ($2) {
case /^static/:
static_imports[++static_lines]=$0;
break;
case /^java[.].*/:
java_imports[++java_lines]=$0;
break;
case /^javax[.].*/:
javax_imports[++javax_lines]=$0;
break;
case /^org[.].*/:
org_imports[++org_lines]=$0;
break;
case /^com[.].*/:
com_imports[++com_lines]=$0;
break;
case /^partner[.]company[.].*/:
partner_imports[++partner_lines]=$0;
break;
case /^my[.]company[.].*/:
my_imports[++my_lines]=$0;
break;
default:
other_imports[++lines]=$0;
}
next;
}
/^[[:space:]]*$/ {
if (importing) {
next;
}
}
function printArray(array) {
asort(array);
i=0;
for (i in array) {
print array[i];
}
if (i > 0) {
print "";
}
}
{
if (importing) {
importing=0;
printArray(java_imports);
printArray(javax_imports);
printArray(org_imports);
printArray(com_imports);
printArray(other_imports);
printArray(partner_imports);
printArray(my_imports);
printArray(static_imports);
}
print
}
我们希望从partner.company。*和my.company。*的导入与其余导入分开,因此需要额外的类别。
使用一个小的Shell脚本将其合并以在多个文件上运行:
#!/bin/sh
for file in "$@" ; do
`dirname $0`/organize-imports.awk $file > $file.ordered
mv $file.ordered $file
done
这为我完成了大部分工作,我不得不手动处理一些特殊情况。
然后,我们使用checkstyle来确保没有人再次提交无序导入的任何内容:
[...]
<module name="ImportOrder">
<property name="groups" value="/^java\./,javax,org,com,*,partner.company,my.company"/>
<property name="ordered" value="true"/>
<property name="separated" value="true"/>
<property name="option" value="bottom"/>
<property name="sortStaticImportsAlphabetically" value="true"/>
<property name="separatedStaticGroups" value="true"/>
</module>
[...]