MyEclipse与IDEA的SpringMvc项目互通办法

Java项目无论最后借助什么IDE,实际上仍就是编写好的代码文本,其他资源等项目的组合,从逻辑上来讲最后都要经过编译形成发布包,发布到实际的运行环境中。在实际开发过程中存在的工程项目不互通的情况,实际上是由于不同的IDE对工程的组织形式不同,编译发布的部署方式有差异,在加上各种IDE在设置上的差异,使得不同IDE新建的项目工程往往不能相互通用,但实际上最终发布的程序,或者说最终交付到Tomcat之类的中间件上的文件组织形式是一致的。所以实际上不存在一种项目只能在Myeclipse(eclipse)或者Intellij IDE中打开,打不开的往往都是设置问题。本文旨在实现一个团队中不同IDE的共融,借助Github等联合开发工具来实现IDE无关性的项目(在此不考虑maven,因为maven建立的项目基本不存在此类问题)。

MyEclipse建立项目由IDEA打开。

本文使用的Myeclipse是2016CI版,操作如下:

菜单栏File->New->Web Project,打开如下图界面,输入项目名称,选择运行时(我这里是tomcat 8.0),然后直接点Finish。

MyEclipse与IDEA的SpringMvc项目互通办法_第1张图片
image.png

初步建好的工程如下图:

MyEclipse与IDEA的SpringMvc项目互通办法_第2张图片
image.png

然后去,http://repo.springsource.org/libs-release-local/org/springframework/spring/

下载响应的Spring版本的dist包。我这里选择了4.3.12版本,解压整个文件到本机上备用。除此之外还需要下载Spring的相关依赖包(此处是个坑,刚开始弄容易忽略),具体如下图:

MyEclipse与IDEA的SpringMvc项目互通办法_第3张图片
image.png

下载可以直接去 http://mvnrepository.com/
然后设置项目的Libraries。选择项目,右键菜单Properties,进入以下界面:

MyEclipse与IDEA的SpringMvc项目互通办法_第4张图片
image.png

点击Add Library,弹出框后选择User Library,next,在弹出的窗口处点User Libraries按钮,进入如下界面:


MyEclipse与IDEA的SpringMvc项目互通办法_第5张图片
image.png

按New,输入名称“Spring 4.3.12” ,再点击Add External JARs按钮,然后选择刚刚下载的Spring等相关jar(Spring的jar在下载下来的文件夹的libs文件夹中),添加进Library中,添加完后效果如下图:

MyEclipse与IDEA的SpringMvc项目互通办法_第6张图片
image.png

点击OK,一路保存到Properties主界面。
进如MyEclipse -> Deployment Assembly

MyEclipse与IDEA的SpringMvc项目互通办法_第7张图片
image.png

点击ADD,选择Java Bulid Path Entry下一步,然后选择我们刚刚添加的Library--“Spring 4.3.12”,把他添加进发布范围。添加后效果如下:

MyEclipse与IDEA的SpringMvc项目互通办法_第8张图片
image.png

接下去,就主要是配置SpringMVC本身的设置了。本文采用无xml方式配置。主要文件如下图:

MyEclipse与IDEA的SpringMvc项目互通办法_第9张图片
image.png

相关文件代码如下:
ConvertWebAppInitializer.java

package convert.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class ConvertWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {


    @Override
    protected Class[] getRootConfigClasses() {
        return new Class[]{WebConfig.class};
    }

    @Override
    protected Class[] getServletConfigClasses() {
        return new Class[]{RootConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

RootConfig.java

package convert.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@ComponentScan(basePackages = {"convert"},
excludeFilters = {
        @ComponentScan.Filter(type = FilterType.ANNOTATION,value = EnableWebMvc.class)
})
public class RootConfig {

}

WebConfig.java

package convert.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan("convert.controller")
public class WebConfig extends WebMvcConfigurerAdapter {
    @Bean
    public ViewResolver viewResolver()
    {
        InternalResourceViewResolver resolver =
                new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

HomeController.java

package convert.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class HomeController {
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index()
    {
        return "index";
    }
}

然后,运行即可看到

MyEclipse与IDEA的SpringMvc项目互通办法_第10张图片
image.png

然后将工程上传到github,注意添加.gitignore文件,并在其中加入如下内容:

.idea/
*.iml
.project
.springBeans
*.eml
*.class
*.jar
.classpath
/bin/
.settings/
.myumldata

以排除不需要的ide文件和java包等文件。
上传完成后,在gitghub的效果如下图:

MyEclipse与IDEA的SpringMvc项目互通办法_第11张图片
image.png
使用IDEA打开刚刚建立的项目。

IDEA要首先选择checkout from version control.然后选择对应的项目点clone

MyEclipse与IDEA的SpringMvc项目互通办法_第12张图片
image.png

然后弹出的提示框选是

MyEclipse与IDEA的SpringMvc项目互通办法_第13张图片
image.png

之后一路next在选SDK的时候选择对应的jdk。之后finish。
主界面打开后选中工程,右键菜单选,Add Framework Support。
打开如下界面:

MyEclipse与IDEA的SpringMvc项目互通办法_第14张图片
image.png

勾选Web Application 不要勾Create web.xml,我们不需要!
下拉左侧,勾选Spring,选择Use library 后点击Create

MyEclipse与IDEA的SpringMvc项目互通办法_第15张图片
image.png

然后,找到Spring的相应Jar包添加进工程,勾选Spring MVC,然后操作和添加Spring的JAR相同,设置好Library。完成后点OK。
选择左上角菜单File->Project Structure,进入如下界面:

MyEclipse与IDEA的SpringMvc项目互通办法_第16张图片
image.png

可以看到Spring和Springmvc的Library我们已经添加完毕,然后我们还需要添加Spring的依赖库和Tomcat中的Servlet包。点+后按照提示添加。添加完后点击Apply。添加完如下图(类库名字自己改下!):

MyEclipse与IDEA的SpringMvc项目互通办法_第17张图片
image.png

然后再Facets页中将Web Resource Directory 设置成 WebRoot,点击Apply。


MyEclipse与IDEA的SpringMvc项目互通办法_第18张图片
image.png

设置完之后,左侧选Artifacts,点击右下角的fix,直到不再出现,将相应的包加入项目生成目录,然后点击OK。到此基础配置完毕。

MyEclipse与IDEA的SpringMvc项目互通办法_第19张图片
image.png

最后,选Run->Run,IDE会要求你配置运行设置,弹出界面如下(点+选中Tomcat Server):

MyEclipse与IDEA的SpringMvc项目互通办法_第20张图片
image.png

然后配置好Tomcat,具体略,主要是选择tomcat的路径,配置完如下图:

MyEclipse与IDEA的SpringMvc项目互通办法_第21张图片
image.png

在此点击Fix,把我们之前配置好的artfacts加入部署,之后点击Run,大功告成!不过MyEclipse和IDEA运行起来的网路路径是不一样的哦

MyEclipse与IDEA的SpringMvc项目互通办法_第22张图片
image.png

至于IDEA建立项目由MyEclipse打开,基本套路与我一开始新建MyEclipse工程类似,主要是要设置好MyEclipse中的Facet以启用相应的插件功能。有机会的话我下次会在写一篇关于这个的博文。

你可能感兴趣的:(MyEclipse与IDEA的SpringMvc项目互通办法)