intellij idea如何打开多个maven的module且相互调用-亚博电竞手机版

小编给大家分享一下intellij idea如何打开多个maven的module且相互调用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

###1、需求

1、intellij idea打开多个项目2、每个同学开发一个项目,相互之前独立不影响3、通过一个入口可以调用所有项目类、方法、属性,达到同时开发且检测代码4、dependency只需要写一份,其余项目不用写,便可全部依赖

###2、注意事项(非常重要)

6个坑:

1、com.yh.bi项目中所有的groupid要一样

2、避免循环依赖,导致程序报错

3、provided打包的服务器运行时候需要provided,本机调试的时候,需要注释在一个maven项目中,如果存在编译需要而发布不需要的jar包,可以用scope标签,值设为provided

4、项目、module建好之后需要添加scala的框架支持

5、在yhproject中,可以统一对所有的module进行清理、编译、打包

6、要运行依赖中的module,则必须要将module中的jar包,打到maven中,需要使用install

下面,是我将所有module中的jar打到maven中的路径:

###3、建立project和建立module

1、只需要建立一个项目,其他项目由module建立,所有module且放在项目中。2、本文项目为yhproject,其余都为module,分别是:mainentrance、yhutils、yhapp、yhweb、yhgame

项目建立步鄹:

module建立步鄹:

项目、所有module、部分module代码展示:

###4、项目之前的依赖关系

###5、代码展示

mainentrance

package com.yh.bi.dag

packagecom.yh.bi.dag  /** *createdbyyuhuion2017/2/10. */ importjava.time.{duration,localdate} importcom.yh.bi._ importcom.yh.bi.{userapp,usergame,userweb} importorg.slf4j.loggerfactory  importscala.collection.immutable.{listmap,listset}  /** *createdbyyuhuion2016/8/25. *task-->node-->dag-->dagexecutor */  caseclassnode[t](task:t,parent:t*){ overridedeftostring:string={ s"$task(${parent.mkstring(",")})" } }  caseclassdag[t](nodes:node[t]*)  caseclassdagexecutor[t](dag:dag[t]){ privatevallog=loggerfactory.getlogger(this.getclass) privateval_nodes:map[t,seq[t]]=dag.nodes.map(node=>(node.task,node.parent.filter(_!=null))).tomap privatevar_pending:set[t]=listset() privatevar_fails=listmap[t,string]() privatevar_success=seq[t]()  //判断node的task节点的父节点运行状态(flase,true) privatedefgetpending:option[t]={ _pending.find{name=> valparents=_nodes(name) !parents.exists(name=>!_success.contains(name)) } }  privatedeffail(name:t,message:string):unit={ _pending-=name _fails =name->message for(child<-_pending.filter(child=>_nodes(child).contains(name))){ fail(child,s"依赖的任务无法执行:$name") } }  privatedefsuccess(name:t):unit={ _pending-=name _success=_success: name }  defexecute(func:t=>unit):unit={ _pending=_nodes.keyset _fails=listmap() _success=seq() varrunning=true  while(running){ valtaskopt=getpending if(taskopt.nonempty){ valtask=taskopt.get valstartmills=system.currenttimemillis() log.info("starttask{}",task) try{ println("=============") func(task)//执行executor方法 println("             ") valtime=duration.ofmillis(system.currenttimemillis()-startmills) log.info(s"endtask$tasktime=$time") success(task) }catch{ casee:throwable=>fail(task,e.getmessage) log.error(e.getmessage,e) log.info(s"failtask$task") } }else{ running=false } }  for(name<-_success){ log.info(s"successtask:$name") } for(name<-_fails){ log.info(s"failtask:${name._1}-${name._2}") } } }  objectdag{ valallsdkdag=newdag[task]( node(userapp), node(usergame), node(userweb) )  defmain(args:array[string]):unit={ dagexecutor(allsdkdag).execute{task=>task.executor("appkey":string,localdate.now(),localdate.now())} } }

yhutils

packagecom.yh.bi  /** *createdbyyuhuion2017/2/10. */ importjava.time.localdate importorg.apache.spark.sql.sqlcontext importorg.slf4j.loggerfactory  abstractclassexecutorextendstaskwithsqlcontextaware{  overridedefrun(appkey:string,startday:localdate,endday:localdate)={}  }  traitsqlcontextaware{ implicitvarctx:sqlcontext=_ }   abstractclasstask{  protectedvallog=loggerfactory.getlogger(this.getclass)  defexecutor(appkey:string,startday:localdate,endday:localdate):unit  defrun(appkey:string,startday:localdate,endday:localdate):unit={ executor(appkey,startday,endday) }  }

yhapp

packagecom.yh.bi  /** *createdbyyuhuion2017/2/10. */ importjava.time.localdate  objectuserappextendsexecutor{  overridedefexecutor(appkey:string,startday:localdate,endday:localdate):unit={  println("    我的userapp的执行过程    ")  }  }

yhweb

packagecom.yh.bi  importjava.time.localdate  objectuserwebextendsexecutor{  overridedefexecutor(appkey:string,startday:localdate,endday:localdate):unit={  println("    我的userweb的执行过程    ")  }  }

yhgame

packagecom.yh.bi  /** *createdbyyuhuion2017/2/10. */ importjava.time.localdate  objectusergameextendsexecutor{  overridedefexecutor(appkey:string,startday:localdate,endday:localdate):unit={  println("    我的usergame的执行过程    ")  }  }

###6、项目中pom依赖展示

yhproject中pom文件展示:

   4.0.0 com.yh.bi yhproject pom 1.0   mainentrance yhapp yhweb yhgame yhutils  

mainentrance中pom文件展示:

  4.0.0 mainentrance com.yh.bi 1.0    yhutils com.yh.bi 1.0     yhapp com.yh.bi 1.0     yhgame com.yh.bi 1.0     yhweb com.yh.bi 1.0        org.apache.maven.plugins maven-compiler-plugin  1.8 1.8    org.apache.maven.plugins maven-shade-plugin 2.4    *:*  **/log4j2.* meta-inf/*.sf meta-inf/*.dsa meta-inf/*.rsa        package  shade   ${project.build.directory}/${project.artifactid}.jar         src/main/scala   ${basedir}/src/main/resources  **/*        

yhutils中pom文件展示:

   yhproject com.yh.bi 1.0   4.0.0 yhutils    org.apache.spark spark-hive_2.11 1.6.1       org.apache.maven.plugins maven-compiler-plugin  1.8 1.8    org.apache.maven.plugins maven-shade-plugin 2.4    *:*  **/log4j2.* meta-inf/*.sf meta-inf/*.dsa meta-inf/*.rsa        package  shade   ${project.build.directory}/${project.artifactid}.jar         src/main/scala   ${basedir}/src/main/resources  **/*      

yhapp中pom文件展示:

   4.0.0 com.yh.bi yhapp 1.0    yhutils com.yh.bi 1.0 provided      org.apache.maven.plugins maven-compiler-plugin  1.8 1.8    org.apache.maven.plugins maven-shade-plugin 2.4    *:*  **/log4j2.* meta-inf/*.sf meta-inf/*.dsa meta-inf/*.rsa        package  shade   ${project.build.directory}/${project.artifactid}.jar         src/main/scala   ${basedir}/src/main/resources  **/*       

yhweb中pom文件展示:

   4.0.0 com.yh.bi yhweb 1.0    yhutils com.yh.bi 1.0 provided      org.apache.maven.plugins maven-compiler-plugin  1.8 1.8    org.apache.maven.plugins maven-shade-plugin 2.4    *:*  **/log4j2.* meta-inf/*.sf meta-inf/*.dsa meta-inf/*.rsa        package  shade   ${project.build.directory}/${project.artifactid}.jar         src/main/scala   ${basedir}/src/main/resources  **/*       

yhgame中pom文件展示:

   4.0.0 com.yh.bi yhgame 1.0    yhutils com.yh.bi 1.0 provided      org.apache.maven.plugins maven-compiler-plugin  1.8 1.8    org.apache.maven.plugins maven-shade-plugin 2.4    *:*  **/log4j2.* meta-inf/*.sf meta-inf/*.dsa meta-inf/*.rsa        package  shade   ${project.build.directory}/${project.artifactid}.jar         src/main/scala   ${basedir}/src/main/resources  **/*       

###7、运行结果展示

注意:我在mainentrance执行dag中的main文件,可以调用且执行了yhutils、yhapp、yhweb、yhgame中的代码

###8、如果建立java 的module

以上是“intellij idea如何打开多个maven的module且相互调用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!

展开全文
内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图