Maven

1.install:打包好的 jar 包會安裝到本地的 maven 倉庫中,使用的配置是默認的配置,供其餘項目使用。 
2.package 指定參數打包:clean package -Dmaven.test.skip=true -Pprod 這種方式就是指定了打包的參數,而且打包後的文件存放到項目的 target 目錄下。web

使用命令建立maven項目

將要用到的maven腳手架已經在私服上部署好了,使用以下命令能夠經過腳手架新建maven項目,注意不要換行(紅色字體的等號後內容請自行替換)tomcat

mvn archetype:generate -B -DarchetypeGroupId="com.noob" -DarchetypeArtifactId=za-pre-fcp-archetype -DarchetypeVersion=1.0.0 -DgroupId="com.noob" -DartifactId=noob-demo  -Dversion=1.0.0 -Dpackage=com.noob.demo服務器

紅色字體說明:mybatis

-DgroupId是要生成項目的groupIdapp

-DartifactId是要生成的項目名稱webapp

-Dversion是要生成的項目版本號maven

-Dpackage是要生成的項目包名ide

藍色字體說明:測試

-DarchetypeGroupId是腳手架的groupId字體

-DarchetypeArtifactId是腳手架的artifactId

-DarchetypeVersion是腳手架的版本號

製做本身的maven腳手架

1 準備好模板

不須要的代碼及配置文件刪掉或者留個空模板

2 執行maven命令

打開cmd窗口,cd到以上代碼的根目錄,運行maven命令:

mvn archetype:create-from-project

而後會在target目錄下面生成generated-sources目錄,這個就是生成的 archetype

3 安裝到本地倉庫

cd進入generated-sourced/archetype目錄,運行maven命令:

mvn install

這樣就把自定義的archetype安裝到本地倉庫了,此時去到maven配置文件中指定的倉庫,此時該文件夾下會有一個archetype-catalog.xml.裏面就是你剛剛安裝好的maven腳手架如今就能夠參照第一步使用本身的maven腳手架新建項目了.

引用項目空間本地文件 配置

<dependency>
  <groupId>net.sourceforge.jeval</groupId>
  <artifactId>jeval</artifactId>
  <version>${jeval.version}</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/src/main/resources/lib/jeval.jar</systemPath>
</dependency>

自動生成mybatis的mapping文件 配置

mvn mybatis-generator:generate

<plugin>
  <groupId>org.mybatis.generator</groupId>
  <artifactId>mybatis-generator-maven-plugin</artifactId>
  <version>1.3.2</version>
  <configuration>
  <verbose>true</verbose>
  <overwrite>true</overwrite>
  <configurationFile>${basedir}/src/main/resources/config/generatorConfig.xml</configurationFile>
  </configuration>
</plugin>

compile & provided

對於scope=compile的狀況(默認scope),也就是說這個項目在編譯,測試,運行階段都須要這個artifact對應的jar包在classpath中。

而對於scope=provided的狀況,則能夠認爲這個provided是目標容器已經provide這個artifact。換句話說,它隻影響到編譯,測試階段。在編譯測試階段,須要這個artifact對應的jar包在classpath中,而在運行階段,假定目標的容器已經提供了這個jar包,因此無需這個artifact對應的jar包了。

eg. 假定項目ProjectABC 中有一個類叫C1,而這個C1中會import這個portal-impl的artifact中的類B1,那麼在編譯階段確定須要這個B1,不然C1通不過編譯,由於scope設置爲provided了,因此編譯階段起做用,因此C1正確的經過了編譯。測試階段相似,故忽略。那麼最後要把ProjectABC部署到服務器上了,這時候,到$tomcat-home\webapps\ROOT\WEB-INF\lib下發現,裏面已經有了一個portal-impl.jar了,換句話說,容器已經提供了這個artifact對應的jar,因此在運行階段,這個C1類直接能夠用容器提供的portal-impl.jar中的B1類,而不會出任何問題。

實際插件的行爲:

當用maven install生成最終的構件包ProjectABC.war後,在其下的WEB-INF/lib中,會包含被標註爲scope=compile的構件的jar包,而不會包含被標註爲scope=provided的構件的jar包。這也避免了此類構件當部署到目標容器後產生包依賴衝突。

相關文章
相關標籤/搜索