Пример создания простого 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.xmlsrc/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 — и можно будет увидеть его в браузере.