IntelliJIdea插件开发之添加⾃定义库(Library)
在⼀些代码⼯程没有⽤ivy,maven这些库⽂件管理⼯具,jar包要么和⼯程⽂件放在⼀起或是存在本地的⽬录中然后通过开发⼯具导⼊。还有⼀种就是库⽂件打包在中间件中,开发时需要引⼊,不⽅便⽤ivy,maven进⾏依赖管理,这时候可能就需要开发⼀个IntelliJ Idea插件⾃动的加⼊⾃定义的库到开发⼯程中。
IntelliJ Idea库分为全局库,项⽬库,模块库。
全局库:库信息记录在<User Home>/.IntelliJIdea/config/l,全局库对所有项⽬都可以访问。
项⽬库:库⽂件的类只能在当前项⽬访问,库信息记录在项⽬的*.ipr⽂件或是.idea/libraries⽬录下的⽂件中。
模块库:库⽂件的类只能在当前模块访问,库信息记录在模块的*.iml⽂件中
包com.s.libraries下⾯的类提供了项⽬库和jars相关的类或是接⼝。
⽰例:
定义ClasspathComputer类,获取要加⼊库的jars路径或是classes路径。
public class ClasspathComputer {
// 获取jar路径List
public static List<String> getClassRoot(String librariePath){
File file = new File(librariePath);
List<File> list = new ArrayList<File>();
ists()){
if(file.isFile()){
list.add(file);
}else{
getClassFile(file,list);
}
}
List<String> rltList = new ArrayList<String>();
for(int i=0;i<list.size();i++){
rltList.(i).getAbsolutePath());
}
return rltList;
}
private static void getClassFile(File parent,List<File> list){
ists()){
File[] files = parent.listFiles();
if(files.length > 0){
for(int i=0;i<files.length;i++){
File cfile = files[i];
if(cfile.isFile()){
Name().endsWith(".jar")){
list.add(cfile);
}
}else if(cfile.isDirectory()){
getClassFile(cfile,list);
}
}
}
}
}
}
增加库的⽅法:
// 加库的⽅法
public void addApplicationLibrary(Project project,String libraryName,List<String> classesRoots) {
final LibraryTable.ModifiableModel model = Instance().getLibraryTable(project).getModifiableModel();
LibraryEx library = (LibraryEx) LibraryByName(libraryName);
maven打包本地jar包// 库不存在创建新的
if(library == null){
library = (LibraryEx) ateLibrary(libraryName);
}
// 库中已有的jar删除
final LibraryEx.ModifiableModelEx libraryModel = ModifiableModel();
String[] classRootUrls = Urls(OrderRootType.CLASSES);
for(String classRootURL : classRootUrls){
}
// 加⼊新的jar
for (String root : classesRoots) {
// 注意jar格式jar:{path_to_jar}.jar!/
dsWith(".jar")){
libraryModel.structUrl("jar",root+"!/"), OrderRootType.CLASSES);
}else{
libraryModel.structUrl("file",root), OrderRootType.CLASSES);
}
}
// 提交库变更
@Override
public void run() {
libraryModelmit();
modelmit();
}
});
// 向项⽬模块依赖中增加新增的库
Module[] modules = Instance(project).getModules();
for(Module module : modules){
Instance(module).getModifiableModel().findLibraryOrderEntry(library) == null){
ModuleRootModificationUtil.addDependency(module,library);
}
}
}
最终会在⼯程的.idea/librarys/⽬录下增加⾃定义库名的xml⽂件。
这⾥只是⽰例,利⽤库的操作API结合⾃⼰的需求可以开发出实⽤的功能,在开发团队中能够提⾼团队的效率。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论