顯示具有 maven 標籤的文章。 顯示所有文章
顯示具有 maven 標籤的文章。 顯示所有文章

2015年5月11日 星期一

Maven POM Reference

Maven POM

modelVersion
  •  POM 的版本

groupId
  • 唯一值,通常為組織或專案項目。通常會以full domain name作為值,例如org.codehaus.mojo。
 
artifactId
  • package生成名字的依據,這是base name 整體名稱是由 artifactId + version 組成。

packaging
  • 打包的類型,例如jar、war、EAR 
version 
  • 如果有SNAPSHOT字串,代表開發階段。
 
url  
  • 專案放置位置,例如git的所在位置 。
 
dependencies
  • 描述

dependencies
  • 依賴關係的置放區塊,例如用到某個jar library,
    放在此處的描述maven將會自動下載至專案中,
    避免常常找不到jar的窘境。

dependency
  • dependencies中的一個項目,不同library會用dependency來宣告。 
example:

 
            org.springframework
            spring-aspects
            ${springframework.version}
       

       
            org.springframework
            spring-webmvc
            ${springframework.version}
       

      
            org.thymeleaf
            thymeleaf-spring4
            2.1.2.RELEASE
       





repositories
  • 用來設定遠端library倉庫所在的區塊。 
repository
  • 用來描述一個倉庫。
     
example :

 
        
            spring
            http://repo.spring.io/release
       

       
            repository.springsource.milestone
            http://repo.springsource.org/milestone
       

       
            neo4j-releases
            http://m2.neo4j.org/releases/
       

 



properties
  • 用來定義參數給予其他POM區塊使用。
     
example:

   
        UTF-8
        1.8
        1.0-SNAPSHOT
        1.7.6
        <springframework.version>4.0.1.RELEASE</springframework.version>
        1.7.3
        2.0.1
   


 而在依賴關係區塊中可如此使用
      
            org.springframework
            spring-webmvc
            ${springframework.version}
       




build
  • 執行打包時要做的動作。



參考資料:
  • https://maven.apache.org/pom.html

2014年7月14日 星期一

maven學習 十二 : SpringMVC + Tiles + log4j

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>tw.ocean.englishProject</groupId>
  <artifactId>englishProject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
 
    <!-- 依賴,就是程式中會用到的jar -->
  <dependencies>  
<!-- Spring Core Bean AOP Expression Context-->
<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.2.9.RELEASE</version>
    </dependency>
   <!-- Spring MVC -->
    <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.9.RELEASE</version>
 </dependency>

 <!-- log工具  spring 需要log4j + slf4j-->
 <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
 </dependency>
 <dependency>                          
       <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
      <version>1.7.7</version>
 </dependency>
 <dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.2</version>
 </dependency>
 <!-- 樣板框架 -->
 <dependency>
       <groupId>org.apache.tiles</groupId>
      <artifactId>tiles-extras</artifactId>
      <version>2.2.2</version>
    </dependency>    
    <dependency>
       <groupId>org.apache.tiles</groupId>
      <artifactId>tiles-servlet</artifactId>
      <version>2.2.2</version>
 </dependency>
 <dependency>
   <groupId>org.apache.tiles</groupId>
     <artifactId>tiles-jsp</artifactId>
     <version>2.2.2</version>
 </dependency>
 <!--  -->
 <dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
 </dependency>

</dependencies>
</project>


maven學習 十一 : Maven Srping MVC


Maven 配置:
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>tw.ocean.englishProject</groupId>
  <artifactId>englishProject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
 
    <!-- 依賴,就是程式中會用到的jar -->
  <dependencies>  
<!-- Spring Core Bean AOP Expression Context-->
<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.2.9.RELEASE</version>
    </dependency>
   <!-- Spring MVC -->
        <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.9.RELEASE</version>
</dependency>

<!-- log工具  spring 需要log4j + slf4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>                          
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.7.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
  </dependencies>
</project>


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <display-name>englishProject</display-name>
<!-- Spring MVC -->
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    <init-param>    
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-context.xml</param-value>
    </init-param>  
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>  
    <url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>


spring-context.xml


xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">





spring-webmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">


<!-- 掃描pojo查看註解來執行自動注入 -->
<context:component-scan base-package="front.*" ></context:component-scan>
<!--Request 請求URL映射-->
<mvc:annotation-driven></mvc:annotation-driven>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/view/"/>
    <property name="suffix" value=".jsp"/>
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
</bean>
</beans>


ReadController  

package front.controller;

import java.util.Map;

import javassist.bytecode.stackmap.TypeData.ClassName;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ReadController  {
private static final long serialVersionUID = 1L;

private static Logger logger = Logger.getLogger(ClassName.class);
     

    public ReadController() {    
        super();
        logger.info("YYYYYYYYYYYYYYYYYYY");
    }

    @RequestMapping({"/" , "/home"})
    public String test(Map<String, Object> model){
     logger.info("HOME HOME HOME HOME HOME");
    return "home";
    }


}



2014年7月12日 星期六

maven學習 十 : log4j for spring

重點  :

  • Spring log機制需要  log4j  與  slf4j
  • 將  log4j.properties 設定檔,放於 WEB-INF 或是 classpath  MATA-INF,就能運作。
  • Spring 能由 org.springframework.web.util.Log4jConfigListener 設定時間掃描設定檔內容,
    做Run time時的設定變更。


pom.xml  

 <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>                           
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.7.7</version> 
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.1.2</version>
</dependency>



 log4j.properties 

#log4j設定檔,此檔只要放到WEB-INF或META-INF中,spring中即可運作
# Root logger option
log4j.rootLogger=INFO,BreadCrumbs
# Console輸出 與 輸出格式
log4j.appender.BreadCrumbs=org.apache.log4j.ConsoleAppender
log4j.appender.BreadCrumbs.Target=System.out
log4j.appender.BreadCrumbs.layout=org.apache.log4j.PatternLayout
log4j.appender.BreadCrumbs.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n


如此在Spring就能運作。


延生功能 :

如果想要做執行期變更設定,可以再web.xml加入:

web.xml

<!-- Log4j -->
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<!-- 半小時會掃描一次 log4j.properties檔,做熱部署-->
<context-param> 
   <param-name>log4jRefreshInterval</param-name> 
   <param-value>1800000</param-value> 
</context-param> 
<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

2014年7月11日 星期五

maven學習 九 : 利用MVNRepository網站,加入mongoDB

Step 1. 連結到  MVN Repository 官網

Step 2. 搜尋欄位中填入  mongodb






Step3 .  點擊  MongoDB Java Driver 項目

MongoDB Java Driver 
The MongoDB Java driver
org.mongodb » mongo-java-driver


Step4.  點擊你想要的版本







 NOTE:



Step 5.  複製 dependency 內容至 專案的 pom.xml 















 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>com.tw.ocean</groupId>
  <artifactId>ProjectD</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <!-- 依賴,就是程式中會用到的jar -->
  <dependencies>  
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.12.2</version>
</dependency>
  </dependencies>

</project>


Step 6 .  執行 mvn install

  • 方法一: 在命令列中  mvn  install
  • 方法二: 在eclipse 中,對專案項目,
                      滑鼠右鍵  >  Run AS  >    Maven Install
如此就會將 mongoDB Driver 下載至本機的Repository資料夾中,
並且會自動引入專案關連。



















參考資料:



maven學習 八 : 使用 Eclipse Maven Plugin 建立Web Project


Step1.  

  • File > New >  Maven Project
Step2 .
  • Check:
                   1.  Create a simple project (skip archetype selection)

                       2. Next

Step3. 
  • Group Id :   tw.com.ocean      //輸入你想要的   "名稱空間"Artifact Id:  MyWebProject    //輸入你想要的   "專案名稱"Packaging:  war          


  • Finish

2014年7月10日 星期四

maven學習 七 : Eclipse install maven plugin

OS : windows7


1.  打開Eclipse Marketplace
  •  Help > Eclipse Marketplace


2.  搜尋 maven 
  • 在marketplace面板中,點擊Search頁籤,在 Find 欄位中,輸入 maven。


找到 Maven Integration for Eclipse 找到支援你自己Eclipse版本的項目,按下install。

3. 安裝完成,重新啟動Eclipse 。

4. 設定maven plugin
  • Windows > Preferences ...
  • Maven > Installations  > add   >
    a.  選擇你下載完存放maven的所在資料夾。
    b.  Global settings from installation directory 選擇你的settings.xml設定檔。
    注意,這是全部環境統一設定。

  • Maven > User Settings >
    a. User Settings (open file):
      ,這裡選擇你個人的settings.xml

    b. Local Repository (From merged user and global settings): ,
        這裡選擇你在setting.xml中所設定的Repository路徑。


            Note:
                     ●  需先安裝maven才能開始第四步,請參考安裝maven
                     ●  設定settings.xml,請參考此篇








參考資料:
Note:
  • 如果想要使用 Install New SoftWare,就到 maven plugin官網下載。

maven學習 六 : maven 執行 java專案

OS     : windows7
maven :3
language: java   



1. 先建立一個測試用 Java SE 專案

  • mvn archetype:generate
    -DarchetypeArtifactId=maven-archetype-quickstart
    -DinteractiveMode=false
    -DgroupId=tw.com.ocean
    -DartifactId=helloworld   


2. 編譯     
  • mvn compile
   NOTE:需要進入pom.xml所在路徑下達 mvn指令。

3. 執行 
  • mvn exec:java -Dexec.mainClass=tw.com.ocean.App



如果main需要傳入參數:
  • mvn exec:java
    -Dexec.mainClass=tw.com.ocean.App
    -Dexec.args=arg0 arg1 arg2

參考資料:





maven學習 五 : 新增 dependency (替專案加入library關連)

OS        :windows7
maven   : 3
language: java  

說明:

  •  maven 在 pom.xml 中可以用來宣告程式中要用到的 Library,
    然後在該 pom.xml 所在的資料路徑中下達命令 「
    mvn install
    maven就會將pom.xml中所宣告的dependency相關連jar下載至
    本機的Repository,當編譯時maven會依pom.xml設定去找出jar連結進來。



Step1. 建立基礎 maven java se 專案   (create maven java se project)
  • mvn archetype:generate //command -DarchetypeArtifactId=maven-archetype-quickstart //這是maven java SE模板 -DinteractiveMode=false -DgroupId=tw.com.ocean //組織名稱(會成為name space) -DartifactId=helloworld //專案名稱
Step2. 打開 pom.xml (open 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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>tw.com.ocean</groupId>
  <artifactId>helloworld</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>helloworld</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

Step3. 加入一個log4j的dependency (add log4j dependency)
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>tw.com.ocean</groupId> <artifactId>helloworld</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>helloworld</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>

Step 4. 執行 mvn install 指令 (excute mvn install)
  • 在pom.xml所在的路徑中,執行 mvn install。

如此就完成加入一個library依賴關係,而且maven會自動處理掉log4j有依賴的其他Library,非常方便。

maven學習 四: 建立maven dynamic web 與 maven dynamic web 轉成 eclipse dynamic web

OS : windows7
manav : 3

建立maven dynamic web:
  • mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp     -DinteractiveMode=false -DgroupId=tw.com.ocean -DartifactId=dynamicWeb
如此會建立一個maven格式的動態網頁專案結構。


maven dynamic web 轉換成  eclipse dynamic web projdet

  • 開啟dos命令模式。
  • 進到想轉換的maven dynamic有pom.xml存在的那一層。
  • mvn eclipse:eclipse
    或是
    mvn 
    eclipse:eclipse -Dwtpversion= <版本號>



轉成Eclipse可用的maven專案後,可在Eclipse中用  :
    File >  import  >  Maven > Existing Maven Project  ,來導入專案於Eclipse中操作。


mavean系列:

2014年7月9日 星期三

maven學習 三:maven 建立專案結構

OS : windows7
manav : 3

maven 產生專案結構有兩個命令

  • 舊指令   mvn archetype:create
  • 新指令  mvn archetype:generate
參考文件:

Example (範例):

使用    mvn archetype:create
  1. 打開命令提示字元   (windows的 command  prompt)
  2. 切換你要生成專案的資料夾裡。
    Note:  想切換到D槽的話,輸入 d: 按下enter。
  3. 輸入 mvn archetype:create -DgroupId=com.ocean -DartifactId=englishCount
    Note: ● 如此就會建立好一個java專案結構,並產生pom.xml檔。 ● mavan如果有使用到的套件或是相關的jar檔, mavan都會下載存放到settings.xml檔中 <localRepository>D:\\tools\\maven-repo</localRepository> 所設定的路徑中。

   注意: ● 如果使用的是windows power shell ,參數與數值要用雙引號,
mvn archetype:create "-DgroupId=com.ocean" "-DartifactId=englishCount"
產生結構:
englishCount
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- com
    |           `-- ocean
    |               `-- App.java
    |                   
    `-- test
        `-- java
            `-- com
                `-- ocean
                    `-- AppTest.java
                        
     

使用 mvn archetype:generate
  • mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DgroupId=tw.com.ocean -DartifactId=helloworld
mvn archetype:generate 則具有多種專案樣板可套用

-DarchetypeArtifactId 選擇樣板 (專案類型,例如java、java web)



NOTE: 在maven官方文件上,建議不要再使用create,因改用generate替代。


mavean系列:
參考資料:


maven學習 二:maven repository

About Repository
  • Repository是Mavean存放套件的地方,若是機器上沒有套件,
    maven會自動下載下來,存放於本機空間中。
  • 預設路徑是,${user.home}/.m2/repository。
  • 設定檔在,apache-maven-3.2.2\conf\settings.xml

更改repository路徑:
  • 打開settings.xml
  • 找到
      <!-- localRepository
      | The path to the local repository maven will use to store artifacts.
      |
      | Default: ${user.home}/.m2/repository
      <localRepository>/path/to/local/repo</localRepository>
     -->
  • 在註解下載加入
      <localRepository>D:\\tools\\maven-repo</localRepository>




參考文件:
  • maven settings.xml檔設說明文件

maven學習 一:maven 安裝

OS : windows7
maven : 3.2.2

Note:
  • 在使用maven前,需要先安裝好JDK。 
  • 官方說明maven需要 JDK 1.6以上版本。
文件:
  • maven官方pom.xml 使用參數說明文件

1.  至apache官網下載 maven  (Download maven)
  • Windows 用 zip 檔,Linux 用 tar.gz
  • source 是未bulider的,此版需要用 Ant bulider成jar來使用。
  • binary  是已經bulider好的,有jar檔可以直接使用。
  • source懂ant的人可以對自己系統環境做優化處理。
     Note:此篇將下載binary使用。

2.  解開壓縮檔,至於你想放置的文地方   (Unzip)
  • 例如:D:\tools\apache-maven-3.2.2
  • 將資料夾名稱改為 maven
3. 設定環境變數  (set  environment variable)
  • M2_HOME = D:\tools\maven
  • 在PATH最後加入 %M2_HOME%\bin
   PATH = [原本的字串];%M2_HOME%\bin

   Note:如果你想在command line模式下加入可使用
   set M2_HOME=D:\tools\maven
   set PATH=%PATH%;%M2_HOME%\bin
   這種方式在command環境關閉後就無效

4.測試maven  (test maven)
  • 打開command line (命令提示字元)
  • 輸入  mav --version 或是  mav -v
    有回應版本號就是環境變數設定成功。