Пример создания простого Java веб-проекта, сборки и упаковки его с помощью Apache Maven.
Установка Maven очень простая и описана, например, тут>>>, хотя пост достаточно старый.
Создадим директорию проекта:
$ mkdir -p /tmp/maven_example $ cd /tmp/maven_example/
Клонируем пустой репозиторий:
$ git clone -b build_deploy_test https://[email protected]/scm/lon/social.git ... Checking connectivity... done.
$ cd social/
С помощью плагина archetype:generate
создаём проект Maven:
$ mvn archetype:generate -DgroupId=com.setevoy.testapp -DartifactId=setevoy_testapp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false ... [INFO] Parameter: groupId, Value: com.setevoy.testapp [INFO] Parameter: packageName, Value: com.setevoy.testapp [INFO] Parameter: package, Value: com.setevoy.testapp [INFO] Parameter: artifactId, Value: setevoy_testapp [INFO] Parameter: basedir, Value: /tmp/maven_example/social [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] project created from Old (1.x) Archetype in dir: /tmp/maven_example/social/setevoy_testapp [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 12.885s [INFO] Finished at: Wed Nov 04 14:53:16 UTC 2015 [INFO] Final Memory: 14M/59M [INFO] ------------------------------------------------------------------------
Теперь у нас есть созданная структура веб-проекта со всеми необходимым каталогами и файлами:
$ ls -l total 4 drwxrwxr-x 3 vagrant vagrant 4096 Nov 4 14:53 setevoy_testapp
ls -l setevoy_testapp/ total 8 -rw-rw-r-- 1 vagrant vagrant 739 Nov 4 14:53 pom.xml drwxrwxr-x 3 vagrant vagrant 4096 Nov 4 14:53 src
$ tree setevoy_testapp/src/ setevoy_testapp/src/ `-- main |-- resources `-- webapp |-- index.jsp `-- WEB-INF `-- web.xml 4 directories, 2 files
Корневой каталог проекта – setevoy_testapp
– содержит файл pom.xml
, в котором описываются инструкции для сборка проекта Maven-ом, и каталог src
с исходными кодами проекта:
src/main/webapp
– содержитindex.jsp
и каталогWEB-INF
;.src/main/webapp/WEB-INF
– содержитweb.xml
src/main/resources
– для изображений и файлов настроек.
Содержимое 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>com.setevoy.testapp</groupId> <artifactId>setevoy_testapp</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>setevoy_testapp Maven Webapp</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> <build> <finalName>setevoy_testapp</finalName> </build> </project>
Далее – нам необходимо запустить саму сборку. Про жизненный цикл Maven можно почитать тут>>>.
Переходим в каталог проекта:
$ cd setevoy_testapp/
И запускаем сборку и уупаковку в war
-файл:
$ mvn clean package ... [INFO] Packaging webapp [INFO] Assembling webapp [setevoy_testapp] in [/tmp/maven_example/social/setevoy_testapp/target/setevoy_testapp] [INFO] Processing war project [INFO] Copying webapp resources [/tmp/maven_example/social/setevoy_testapp/src/main/webapp] [INFO] Webapp assembled in [17 msecs] [INFO] Building war: /tmp/maven_example/social/setevoy_testapp/target/setevoy_testapp.war [INFO] WEB-INF/web.xml already added, skipping [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 20.313s [INFO] Finished at: Wed Nov 04 14:57:49 UTC 2015 [INFO] Final Memory: 9M/59M
Результаты сборки будут располагаться в каталоге target
:
$ ls -l target/ total 20 drwxrwxr-x 2 vagrant vagrant 4096 Nov 4 14:57 classes drwxrwxr-x 2 vagrant vagrant 4096 Nov 4 14:57 maven-archiver drwxrwxr-x 4 vagrant vagrant 4096 Nov 4 14:57 setevoy_testapp -rw-rw-r-- 1 vagrant vagrant 2230 Nov 4 14:57 setevoy_testapp.war drwxrwxr-x 2 vagrant vagrant 4096 Nov 4 14:57 surefire
Добавьте исключение в .gitignore
:
**/target/*
Сохраняем проект:
$ git status ... Untracked files: (use "git add <file>..." to include in what will be committed) .gitignore setevoy_testapp/
$ git add -A
$ git status ... new file: .gitignore new file: setevoy_testapp/pom.xml new file: setevoy_testapp/src/main/webapp/WEB-INF/web.xml new file: setevoy_testapp/src/main/webapp/index.jsp
$ git commit -m "app1" [build_deploy_test 50519e3] app1 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 .gitignore delete mode 100644 index.jsp create mode 100644 setevoy_testapp/pom.xml create mode 100644 setevoy_testapp/src/main/webapp/WEB-INF/web.xml create mode 100644 setevoy_testapp/src/main/webapp/index.jsp
Готово. Теперь достаточно поместить war-файл в каталог webapps сервер Tomcat или Jetty – и можно будет увидеть его в браузере.