java之maven的使用/eclipse中maven項目部署到tomcat的幾種方法

maven目錄結構:下面的是javaee的結構顯示模式。

maven項目的生命週期:清理clean、編譯compile、測試test、打包package、安裝install 

pom.xml相關解釋:https://blog.csdn.net/lovequanquqn/article/details/81627807

maven配置tomcat:https://www.cnblogs.com/hendy326/p/8052967.html

https://www.cnblogs.com/yjmyzz/p/3495762.html

***maven的下載地址:http://maven.apache.org/download.cgi

Binary:編譯之後的二進制文件

Source:表示可以查看源代碼的,比Binary大一點

tar.gz archive:Linux、macOS系統使用

zip archive:windows系統使用

 

***maven的環境變量配置:

1.在終端輸入  vim ~/.bash_profile,進入到環境變量配置文件裏面;

2.進入後,是read模式,按下 i (編輯)鍵,進入insert模式;

3.將環境變量加入其實,環境變量如下:

      export MAVEN_HOME=/Users/HaokeMaster/Downloads/apache-maven-3.6.3

       export PATH=$PATH:$MAVEN_HOME/bin

4.按下 ESC,退出insert模式;

5.輸入 :wq (保存修改)退出當前文件;

6.使修改的環境變量bash_profile文件生效,輸入 source .bash_profile,按下Enter鍵即可.

7.檢測maven安裝成功與否:mvn -v

出現以下表示安裝成功:

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/HaokeMaster/Downloads/apache-maven-3.6.3
Java version: 10.0.1, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
Default locale: zh_CN_#Hans, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.5", arch: "x86_64", family: "mac"

***maven的相關設置:conf->settings.xml

 

設置maven倉庫:倉庫就是我們通過maven下載的jar包存放的地方

<localRepository>/Users/HaokeMaster/Downloads/apache-maven-3.6.3/repository</localRepository>

換成阿里雲鏡像:

  

<mirror>

        <id>alimaven</id>

        <name>aliyun maven</name>

        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

        <mirrorOf>central</mirrorOf>

    </mirror>

 

新建maven項目:先配置eclipse的maven  settings.xml,然後一步一步創建,右鍵new->others->maven project->

構建索引(快速查找到jar包):windows->show view ->other->搜索maven,選擇maven respository->

如果新建完之後,項目的目錄是不對的。解決辦法:

右鍵項目屬性 -> Java Build Path -> JRE SYSTEM LIBRARY -> 編輯 -> Workspace default JRE -> Apply 即可生成正確的目錄結構

 

 

 

***********maven部署項目到tomcat:

1.配置tomcat信息和權限,tomcat7.0\conf\tomcat-users.xml。打開 Tomcat 的 manager 功能,找到 conf 文件夾下的 tomcat-users.xml文件中的 <tomcat-users>標籤,然後添加如下內容(可以直接在其文檔註釋部分找到對應的模版,然後進行修改):

<role rolename="manager-gui"/>
<role rolename="manager" />
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager,manager-script"/>

 

如果已經有了相關用戶信息信息,就不用添加了,但是權限要加上

 <role rolename="manager-gui"/>
 <role rolename="manager" />
 <role rolename="manager-script"/>

tomcat配置成功後在瀏覽器打開localhost:8088/manager 

2.配置maven,maven\conf\settings.xml

<servers>  
   <server>  
     <id>tomcat9</id>  
     <username>tomcat</username>  
     <password>tomcat</password>  
   </server>  
 </servers> 
這裏的用戶名密碼要和服務器配置的用戶名密碼一致

3.在eclipse中配置pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>lambo</groupId>
  <artifactId>testone</artifactId>
  <version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
  <name>Myfirstmaven</name>
  <description>我的第一個maven</description>
  
 <dependencies>
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>4.0.1</version>
   <scope>provided</scope>
  </dependency>
 </dependencies>
 <build>
  <!-- 設置war包名稱 -->    
    <finalName>testone</finalName>  
		<plugins>
		<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<!-- 直接訪問 Tomcat 服務器的 manager -->
					<url>http://localhost:8088/manager</url>
					<server>tomcat9</server><!-- 此處的名字必須和setting.xml中配置的ID一致-->
					<username>tomcat</username>
					<password>tomcat</password>
					<skip>true</skip><!-- 跳過測試 -->
					<update>true</update>
					<ignorePackaging>false</ignorePackaging>
					<path>/testone</path><!-- 此處的名字是項目發佈的工程名-->
				</configuration>
			</plugin>
 
		</plugins>
	</build>
  <pluginRepositories>
    <pluginRepository>
        <id>apache.snapshots</id>
        <name>Apache Snapshots</name>
        <url>http://repository.apache.org/content/groups/snapshots-group/</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>
</project>

4.執行命令,先啓動tomcat9。

1)Run as → clean install
2)Run as → tomcat7:deploy 注:第1次部署執行
3)Run as → tomcat7:redeploy 注:第2次或以後需要重新發布執行
4)Run as → tomcat7:run 注:部署到 tomcat 中啓動(執行之前先關閉tomcat9,如果部署到本地,防止端口占用啓動不了)

 

******

eclipse中使用tomcat使用啓動web項目的流程是 java build path編譯項目源代碼生成的class文件放到buildpath的設置路徑中,根據web deployment assembly將項目中的各個資源發佈到設置的指定文件

*******eclipse中轉換成web項目:

解決方案:

1.如果是新建或新導入的Maven web項目,選中項目右鍵->maven->update project

2.選中項目右鍵->properties->project facets->選中Dynamic Web Module和java,

*********eclipse中maven項目部署到tomcat的幾種方法:********

1.打成war包(eclipse中的項目->右鍵->Run as->maven->maven install,然後在target文件夾下找到xx.war),放到tomcat/webapps目錄中,在瀏覽器地址欄輸入localhost:8088/manager,然後下面就會列出項目:

 

2.直接使用servers 在eclipse中部署到tomcat:(適合本地的調試。

創建maven項目,相關配置參考最上面的幾步,然後啓動服務器(選擇中間的選項,部署路徑deploy path選擇webapps); 

注意事項:

 

3. 使用tomcat-maven插件(適合直接部署到測試服務器):

注意: tomcat的webapps中的manager應用不能刪除,

修改webapps/manager/META-INF/conetxt.xml配置 ,manager應用默認爲只能本機訪問,修改爲所有ip都可訪問

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /><!--只有本機可以訪問-->
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="^.*$" /><!--所有IP都可以訪問-->

 

<build>
  <!-- 設置war包名稱 -->    
    <finalName>testone</finalName>  
		<plugins>
		<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<!-- 直接訪問 Tomcat 服務器的 manager -->
					<url>http://localhost:8088/manager/text</url><!--必須要是這個url-->
					<server>tomcat9</server><!-- 此處的名字必須和setting.xml中配置的ID一致-->
					<username>tomcat</username>
					<password>tomcat</password>
					<skip>true</skip><!-- 跳過測試 -->
					<update>true</update>
					<ignorePackaging>false</ignorePackaging>
					<path>/testone</path><!-- 此處的名字是項目發佈的工程名-->
				</configuration>
			</plugin>
 
		</plugins>
	</build>
  <pluginRepositories>
    <pluginRepository>
        <id>apache.snapshots</id>
        <name>Apache Snapshots</name>
        <url>http://repository.apache.org/content/groups/snapshots-group/</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

 

1.啓動tomcat,2.tomcat(tomcat7.0\conf\tomcat-users.xml)、maven(maven\conf\settings.xml)、eclipse(pom.xml)分別做相應配置(參考最上面的幾個步驟),運行項目Run as  ->maven build ->

 部署完成後(tomcat中webapp文件夾下會出現testone文件夾和tetsone.war包),會有相關信息出現:

INFO] --- tomcat7-maven-plugin:2.2:deploy (default-cli) @ testone ---

[INFO] Deploying war to http://localhost:8088/testone

Uploading: http://localhost:8088/manager/text/deploy?path=%2Ftestone&update=true

INFO] tomcatManager status code:200, ReasonPhrase:

[INFO] OK - 以應用path [/testone] 部署應用

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

****tomcat開啓遠程管理Manager(IP權限問題):

1.開啓遠程訪問,兩種方式

    a.打開若沒有則新建

/conf/Catalina/localhost/manager.xml
內容爲:
<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"   
         docBase="${catalina.home}/webapps/manager">  
             <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />  
</Context> 
 b.修改/webapps/manager/META-INF/context.xml,註釋掉value裏內容
<Context antiResourceLocking="false" privileged="true" >
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>
改爲
<Context antiResourceLocking="false" privileged="true" >
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="^.*$" /></Context><!--所有IP都可以訪問-->
或者直接吧Context之間的內容註釋掉。

Tomcat的默認工具manager配置,在很多的生產環境中由於基本用不到、或者是不太需要使用Tomcat默認的manager管理頁面時一般都會把Tomcat的默認webapp下的內容給刪除了,但是如果需要使用Tomcat默認的manager來管理項目時就需要保留相應的文件目錄。在Tomcat中的webapps中有如下目錄:docs(Tomcat本地說明文檔)、examples(Tomcat相關的deamon示例)、host-manager(主機頭管理工具)、manager(項目管理工具)、ROOT(Tomcat默認頁),其中需要保留的是host-manager、manager、ROOT這3個目錄而從Tomcat 6開始爲了安全缺省條件下Tomcat的host-manager、manager是不能訪問的(http 401拒絕),如需訪問需要分配相關的角色權限。

 

*****如果tomcat啓動成功,但是managerapp不能訪問(角色權限問題),需要添加如下:

在tomcat安裝目錄下conf下的tomcat-users.xml配置文件中添加如下。

<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<role rolename="manager-script"/>
<role rolename="manager-status"/>
<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui,manager-jmx,manager-script,manager-status"/>

 

從Tomcat 7開始安全機制下默認僅允許本機訪問Tomcat,如需遠程訪問Tomcat的管理頁面還需要配置相應的ip允許規則,配置manager的context.xml。也可以在${catalina.home}/conf/Catalina/localhost目錄下配置2個contest.xml文件,也可以寫成一個,但是建議寫成2個便於日常的權限管理,如下:

manager.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/manager">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>

host-manager.xml: 
<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/host-manager">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
其中allow中是填ip可以使用正則表達式匹配,在內網中建議寫成匹配某某網段可以訪問的形式,如此Tomcat的manager頁面訪問配置就完成了

*******(IP權限的問題)tomcat/conf/Catalina/localhost(或者其他ip地址)/manager.xml(mananger沒有則創建)

<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"   
         docBase="${catalina.home}/webapps/manager">  
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />  
</Context>  

 

 

********pom.xml詳解

maven依賴的原則;第一聲名原則,路徑優先原則,

properties:提取版本號,下面的使用中只需要${properties中定義的版本號}

dependencyManagement:鎖定版本,其他地方的版本號抖失效,以這裏定義的爲準;

dependencies:依賴

exclusions:將插件中的包排出掉

build-plugins:插件,需要project update

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章