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

星期二, 1月 29, 2019

Build WebGoat in a temporary Docker Container

  • git clone https://github.com/WebGoat/WebGoat
  • cd WebGoat
  • docker run -it --rm --name mymaven -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven maven:3-jdk-11 mvn clean install

星期二, 1月 01, 2019

Java Restful WebServices

為了想在最少的準備之下開發 Java Restful WebServices,研究了以下的做法:
  1. 參考這篇這篇所述,在 Docker 已安裝的前提下,藉由 Maven webapp plugin,不依賴任何 IDE,建立專案的目錄結構。需要在一個空的目錄下這命令(請自行替換適合的 groupId):
    docker run -it --rm -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven maven mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=com.acme -DartifactId=my-webapp
  2. 將這群目錄、檔案的擁有權取回:
    sudo chown -R `whoami`. my-webapp
  3. 進入 my-webapp 子目錄,補上 src/main/java/com/acme/TestService.java,內容可參考這篇(如果用複製的話,要注意雙引號可能需要替換)。
  4. 續上,增加 servlet 與 servlet-mapping 補足 src/main/webapp/WEB-INF/web.xml 的內容,尤其要注意 param-value 與程式中所述的套件、所在路徑一致。
  5. 續上,增加三個 dependency 補足 pom.xml 的內容。若在意未來的路徑名稱,也可以增設 build/finalName。
  6. 再用 Maven 於 target 目錄產出 war 檔:
    docker run -it --rm -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven maven mvn package
接下來的課題是,需要 Servlet Container 讓 war 跑起來,一樣是借重 Docker 與大家最熟悉的 Tomcat:
  1. 將 Tomcat 預設埠 8080 8443 都對應好:
    docker run -d --name tomcat -p 8080:8080 -p 8443:8443 tomcat
  2. 先確認瀏覽器訪問 8080 沒問題,再設法讓 Manager App 開起來,首先是修改 /usr/local/tomcat/conf/tomcat-users.xml 增加 manager-gui 角色的帳密;若要遠端訪問還有 /usr/local/tomcat/webapps/manager/META-INF/context.xml 要放寬 RemoteAddrValve。
  3. 登入 Manager App 之後,部署 war 上去,不論 http://localhost:8080/my-webapp 或 http://localhost:8080/my-webapp/rest/testservice 都應能得到正確內容。
  4. 準備 https 憑證與金鑰檔,放到 Docker Container 內,並參考這篇的說明修改 /usr/local/tomcat/conf/server.xml,對應的必要屬性至少有 certificateFile、certificateKeyFile 兩個,就可改由 https 8443 訪問取得結果。

星期五, 9月 01, 2017

Maven install reference

在舊版(3.0.5)mvn install 遇到以下問題:

  • [ERROR] ...
  • The following artifacts could not be resolved:
    • com.dummy:packageA:jar:1.0.0-SNAPSHOT,
    • com.dummy:packageB:jar:1.0.0-SNAPSHOT
    • ...
  • Could not find artifact ... in snapshots (http://your.artifact.com/libs-snapshot)

如果我們明明在本地端 Maven Repositories 能找到那些 JAR,但以上的指令固執地只找遠端,可以這麼修正:

  • rm ~/.m2/repository/com/dummy/packageA/1.0.0-SNAPSHOT/_maven.repositories
  • rm ~/.m2/repository/com/dummy/packageB/1.0.0-SNAPSHOT/_maven.repositories

星期二, 1月 21, 2014

使用 Eclipse 瀏覽藉由 Maven 管理的專案原始碼

安裝設定需求
  • JDK 最新版,不需設定環境變數等內容
  • Eclipse for Java EE 最新版,會自動搜尋電腦上已安裝的 Java
  • 不需額外安裝 Maven 或插件,使用內建版本即可
做法
  • 隨意新增一個 Maven 專案,groupId 與 artifactId 可以任意填寫,template 選預設的 quickstart 即可。
  • 編輯 pom.xml,新增一個 dependency,groupId、artifactId、version 要填人家正式公佈的,例如 org.jasig.cas / cas-server-webapp / 3.5.2。存檔。
  • 需有網路連線。
  • 在專案上右鍵所出現的選單有 Maven -> Download Sources。
  • 在 Maven Dependencies 展開可見相依的 Jar 檔,進一步展開即可見原始碼。