怎么运行利用maven搭建的分布式系统

怎么运行利用maven搭建的分布式系统,第1张

一、准备条件

1、安装下载jdk

这里以jdk16为例

2、安装eclipse

到eclipse官网下载 Eclipse IDE for Java EE Developers版本的eclipse

http://wwweclipseorg/

3、安装tomcat6

4、安装maven

5、安装eclipse maven插件

这里以在线安装的方式,安装地址为:http://m2eclipsesonatypeorg/sites/m2e

二、配置

1、在eclipse中配置jdk安装位置,tomcat安装位置,maven安装位置,为tomcat指定jdk

在此不详述

2、在eclipse中新建一个maven项目

2-1、新建一个maven项目,选择create a simple project

2-2、

点击Next,进入下一个

在此窗口下填写group id,artifact id,可以随便写一个,在Packaging中选择war类型

点击下一步,在以下步骤中一直next,直到最后点击finish

2-3、

右击项目,选择properites,打开以下对话框

在此界面右边导航栏选中 Project Facets,点击超链接Convert Faceted from,进入以下界面

2-4、

在Configuration中选择custom

在下方的Project Facet的Dynamic Web Module中选择25版本

在java中选择16

注意:这些选择可能根据tomcat版本变化而变化,就tomcat6来说选择以上选项是可以的

此步骤非常重要,只有操作了此步骤,右侧导航栏才会有Deployment Assembly 链接

2-5

接下来点击右边面板的Runtime面板

可以看到下方中有tomcat,如果没有,则点击下面的new,新建一个,新建后选中复选框,然后apply,ok

2-6、

在项目属性面板中的作部导航栏选择Deployment Assembly选项,在右边Web Deployment Assembly

如果看到以下的图示,那么配置就完成了

这里解释一下以上文件

src/main/java

文件夹是存放java源码的,发布项目时会将该文件夹下的class文件复制到WEB-INF/classes目录下

src/main/resources

该文件夹一般放置配置文件,如xml,properties文件等,其实也可以放置java文件,只是一种约定罢了,发布项目时

该文件夹的文件也会复制到WEB-INF/class中

至于test,有些类似,只不过这些是测试代码,用过maven的应该会知道这一点

src/main/webapp

maven中约定是把该文件夹当成是普通web项目中的WebRoot目录,看看右边的deploy path,发布项目时

是发布到根目录/了。该文件夹在建成的maven web项目中,在其内尚没有WEB-INF/classes,WEB-INF/lib文件夹

需要手工建立

注意:有时候由于某种原因,你打开的以上视图可能是下面这样的,

其实,这样也是可以运行项目,调试项目的,但是,如果你运行该项目的pomxml文件时就会报错,为什么呢,

因为maven会把src/main/webapp文件当成是普通web项目中的WebRoot,而该你的配置里面(上图)却

没有配置,故而会报错。

怎么办呢,分2步

1、选中 WebContent,remove掉它

2、新建一个,Source文件夹为src/main/webapp,deploy path为 /

点击apply,ok即可。

最后还必须将maven库映射到WEB-INF/lib下,具体操作如下,点击add按钮,进入下图

选择java build path entries,点击next,进入下图

选择Maven Dependencies,点击finish,最终如下图

如果不把Maven Dependencies映射到WEB-INF/lib,则在服务端如servlet中用到maven中的库时,则会提示找不到类(虽然你在编写代码时没有红xx,但是运行程序时却会找不到类)

三、运行

在eclipse的server视图中添加你的项目,右键选择的tomcat服务器,选择add and remove,添加刚才新建的web工程,效果如下图

在src/main/java中建立一个servlet,在src/main/webapp中建立一个jsp

启动tomcat,访问你的servlet和jsp,在servlet中你可以定断点,可以调试。

需要。tomcat部署就是将项目拷贝到maven服务器,Tomcat启动时将自动加载应用。启动时还需要maven环境的支持才可以顺利启动。所以需要安装。Maven项目对象模型,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

一、项目打包:

1更改项目的启动方式

使用webxml运行应用程序,指向Application,最后启动springboot(继承SpringBootServletInitialier,重写函数)

public class WarStartApplication extends SpringBootServletInitializer {

   @Override

           protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

                  return buildersources(Applicationclass);

           }

    }

2更改properties配置信息

修改相关的地址和配置信息

PS: 可采用STS自带的动态配置系统(多配置文件)进行开发环境和生产环境的隔离。

3更改api接口层配置文件(pomxml)

1)进行war包配置

<packaging>war</packaging>

2)war包打包所需依赖项

<dependency>

      <groupId>javaxservlet</groupId>

      <artifactId>javaxservlet-api</artifactId>

      <scope>provided</scope>

</dependency>

4执行打包操作

1)maven clean清除之前的打包

2)maven install进行打包操作

二、将war包文件上传至服务器

1在api层的target文件夹下找到新生成的项目war包

2使用rzsz工具上传war包(rz)

三、使用Tomcat进行项目开放

1进行 Tomcat的环境部署

2将war包拷贝到tomcat的webapps文件夹下

3cd至bin文件夹下(tomcat会自动解压项目war包并进行项目部署)

使用startupsh进行tomcat启动

使用shutdownsh进行tomcat关闭

classpath:是从类路径里查找配置文件,也就是/WEB-INF/classes目录下找SpringMVC-servletxml。

你写了classpath了,不会从web-info下找,而是去web-inf/classes下面找,所以找不到。

服务器(Tomcat)读取资源文件

方式一:采用流+Properties

当工程部署到Tomcat中时,按照上边方式,则会出现找不到该文件路径的异常。经搜索资料知道,Java工程打包部署到Tomcat中时,properties的路径变到顶层(classes下),这是由Maven工程结构决定的。由Maven构建的web工程,主代码放在src/main/java路径下,资源放在src/main/resources路径下,当构建为war包的时候,会将主代码和资源文件放置classes文件夹下,并且,此时读取文件需要采用流(stream)的方式读取,并通过JDK中Properties类加载,可以方便的获取到配置文件中的信息,如下。

采用Spring注解

如果工程中使用Spring,可以通过注解的方式获取配置信息,但需要将配置文件放到Spring配置文件中扫描后,才能将配置信息放入上下文,然后在程序中可以使用 @Value进行获取properties文件中的属性值。

采用Spring配置

也可以在Spring配置文件中读取属性值,赋予类成员变量。

一个基本的glassfish的配置如下:

<plugin>

<groupId>orgglassfishmavenplugin</groupId>

<artifactId>maven-glassfish-plugin</artifactId>

<version>22-SNAPSHOT</version>

<configuration>

<glassfishDirectory>${glassfishhome}</glassfishDirectory>

<user>${domainusername}</user>

<!-- <adminPassword>admin</adminPassword> -->

<passwordFile>${glassfishhome}/domains/domain1/master-password</passwordFile>

<debug>true</debug>

<echo>true</echo>

<domain>

<name>domain1</name>

<adminPort>4848</adminPort>

</domain>

<components>

<component>

<name>${projectartifactId}</name>

<artifact>${projectbuilddirectory}/${projectbuildfinalName}war</artifact>

</component>

</components>

</configuration>

</plugin>

使用glassfish必须要求自定义<glassfishDirectory>,<user><passwordFile>或者<adminPassword>,<domain><components><debug><echo>这几个标签,对于这几个标签解释如下:

<configuration>:定义

<glassfishDirectory>:glassfish_home的目录,可以通过在settingsxml profiles中设置或者在这里指定

<user>:用户名,glassfish安装后会自动新建了一个域,domain1,用户名默认是admin,也可以通过settingsxml profiles中设置或者在这里指定

<adminPassword>:用户名密码,这个跟<passwordFile>是互相冲突的,两者只能选1,使用这个标签则要明文输入管理员登录密码,而且在glassfish启动的时候会自动生成一个tmp的文件进行读取

<passwordFile>:密码文件,指定新建域的密码文件存放位置,以domain1来说密码位置上存在domain1的根目录下的master-password

<debug>:是否使用debug模式启动glassfish,使用debug模式启动可以查看中间使用的[Info]信息,可以跟echo一起使用

<echo>:是否以echo模式启动glassfish,使用echo模式启动则直接运行,除了最后出错信息跟一些必要的[Info]信息之外其余都不显示包括中间运行错误的信息

<domain>:域

<name>:域名,指定当前项目使用那个域启动,这个域是跟<user>,<passwordFile>的内容对应的

<adminPort>:控制台端口,一般是4848

<components>:组件,生成目录:

<component>组件

<name>:组件名称,一般默认使用project的artifactId,也就是project的文件名

<artifact>:生成指定文件的目录与文件类型,对于webapp的话则是webapp

有些时候私服访问需要密码,可以这么使用

servers 配置

用来下载和部署的仓库是用POM中的repositories和distributionManagement元素来定义的。但是某些配置例如username和password就不应该随着pomxml来分配了。这种类型的信息应该保存在构建服务器中的settingsxml中。

 

<settings >

      

      <servers>

      <server>

      <id>server001</id>

     <username>my_login</username>

     <password>my_password</password>

     <privateKey>${userhome}/ssh/id_dsa</privateKey>

     <passphrase>some_passphrase</passphrase>

    <filePermissions>664</filePermissions>

     <directoryPermissions>775</directoryPermissions>

     <configuration></configuration>

     </server>

     </servers>

     

 </settings>

id:这是Server的ID(不是登录进来的user),与Maven想要连接上的repository/mirror中的id元素相匹配。

username,password:这两个元素成对出现,表示连接这个server需要验证username和password。

privateKey,passphrase:与前两个元素一样,这两个成对出现,分别指向了一个私钥(默认的是${userhome}/ssh/id_dsa)和一个passphrase。passphrase和password元素可能在将来被客观化,但是现在必须以文本形式在settingsxml中设置。

filePermissions,directoryPermissions:当一个仓库文件或者目录在部署阶段被创建的时候,就必须用到权限许可。他们合法的值是三个数字,就像nix中的文件权限,例如:664,775

注意:

如果你使用了一个私钥来登录server,那么password元素必须被省略,否则私钥将被忽视。

方法:

1基于artifactId准备路径,将artifactId连接到后面:org/testng/testng

2使用version准备路径,将version连接到后面:org/testng/testng/58

3将artifactId于version以分隔符连字号连接到后面:org/testng/testng/58/tesng-58

4判断如果构件有classifier,就要在 第4项 后增加 分隔符连字号 再加上 classifier,org/testng/testng/58/tesng-58-jdk5

5检查构件的extension,如果extension存在,则加上句点分隔符和extension,而extension是由packing决定的,org/testng/testng/58/tesng-58-jdk5jar

6、基于groupId准备路径,将句点分隔符转成路径分隔符,就是将  ""  转换成 "/" ; example: orgtestng --->org/testng

参考资料

Maven详解之仓库------本地仓库、远程仓库研发管理[引用时间2017-12-28]

一、打开idea,查看左上方工具栏,依次点击File->New->Project。此时弹出一个窗口,在左边栏选择Maven,稍等一段时间加载之后,右侧会出现一列archetype。勾选Create from archtype,找到并选择orgapachemavenarchtypes:maven-archtype-webapp,点击Next。

二、填写这个maven项目的GroupId,ArtifactId,Version信息。这是标识maven项目的三维坐标。点击Next

三、这一步就很关键了。上面是maven的根目录、settingsxml文件和本地仓库的位置,这些不必过多理睬,路径也因人而异。下面的是一些属性,除了已有的6个,我们需要添加一个archetypeCatalog=internal。这个参数的意义是让这个maven项目的骨架不要到远程下载而是本地获取。如果你没加这个参数,那么项目创建可能在卡在downloading maven plugins继续点击Next

四、为项目命名,点击Finish,项目一瞬间就创建好了

五、查看项目的结构,可以发现,web应用该有的已经都有了。至此,maven web项目创建完毕,接下来看看如何进行编译打包部署。

六、直接在idea左下的Terminal终端输入mvn install,编译打包成功,显示BUILD SUCCESS字样。重新查看项目的目录,我们发现项目根目录下面多了target目录,该目录下也打出了war包。

七、将应用部署到tomcat服务器。这里采用两种部署的方法,可以任选一个。

方法一:

将上面提到的taget目录下的springwar包放到tomcat安装目录的webapps的目录下。使用命令行(cmd)切换到tomcat安装目录的bin目录下,执行startupbat脚本,执行之后tomcat会部署webapps目录下的应用war包。稍等应用部署完毕之后,打开浏览器,输入localhost:8080/spring,可以看到输出了Hello World!

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 怎么运行利用maven搭建的分布式系统

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情