Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > Maven автоматзировать запуск приложения


Автор: 4epT 11.7.2011, 09:17
Доброе утро) Понемногу птыаюсь перейти на Maven (до этого использовал Ant) и столкнулся с такой проблемой... сейчас для запуска проекта приходиться из Eclipse руками вызывать mvn clean install и потом копировать app.war в webapp томкета, в Ant мы просто пишем цели а потом можем при помощи команд копировать war файлы в директорию томкета. Кто может подсказать из своего опыта как правильно и более удобнно сделать процесс сборки и запуска Maven проекта ?

Автор: Stolzen 11.7.2011, 09:28
Можно использовать плагин maven-jetty-plugin: 

Код

<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>group-id</groupId>
    <artifactId>artifact-id</artifactId>
    <packaging>war</packaging>
    <version>1.0</version>
    <name>NAME</name>
    <description>description</description>

    <build>
        <plugins>
            
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.16</version>
                <configuration>
                    <connectors>
                        <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                            <port>9090</port>
                            <maxIdleTime>60000</maxIdleTime>
                        </connector>
                    </connectors>
                    <requestLog implementation="org.mortbay.jetty.NCSARequestLog">
                        <filename>target/yyyy_mm_dd.request.log</filename>
                        <retainDays>90</retainDays>
                        <append>true</append>
                        <extended>false</extended>
                        <logTimeZone>GMT</logTimeZone>
                    </requestLog>
                </configuration>
            </plugin>
            
            <!-- Another plugins -->        
        </plugins>
    </build>

    <!-- Dependencies ... -->

</project>


запуск - mvn jetty:run

Если обязательно нужен именно Tomcat, то можно посмотреть тут http://cargo.codehaus.org/

Автор: 4epT 11.7.2011, 10:09
Спасибо ) буду разбираться.

Автор: 4epT 12.7.2011, 00:32
Что то так и не получилось автоматизировать этот процес ( Подскажите пожалуйста может можно выполнить из pom.xml какой то скрипт ?
Например я хочу после деплоя (mvn install) выполнить вот такое:
Код

cd /Users/User/Documents/workspace/Project/target/
cp Project.war /Users/User/tomcat/webapp/


как можно такое сделать ?

Автор: Stolzen 12.7.2011, 09:56
По идее, если использовать плигин cargo, то не нужно будет вручную копировать

Добавляете плагин и запускаете mvn cargo:deploy

Вот нашел кусок помника, добавьте в plugins:

Код

     <plugin>
       <groupId>org.codehaus.cargo</groupId>
       <artifactId>cargo-maven2-plugin</artifactId>
       <version>1.0.2</version>
       <configuration>
         <wait>true</wait>
         <container>
           <containerId>tomcat6x</containerId>
           <type>installed</type>
           <home>${env.CATALINA_HOME}</home>
         </container>
         <configuration>
           <type>existing</type>
           <home>${env.CATALINA_HOME}</home>
         </configuration>
         <deployer>
           <type>installed</type>
           <deployables>
             <deployable>
               <groupId>groupId</groupId>
               <artifactId>artifactId</artifactId>
               <type>war</type>
             </deployable>
           </deployables>
         </deployer>
       </configuration>
     </plugin>


В deployable записывается groupId и artifactId проекта, который вы хотите задеплоить
CATALINA_HOME - путь к томкату



Автор: 4epT 13.7.2011, 13:28
Через cargo проект собирается, но war файле в webapps Томкета не появляется. Никаких ошибок не выдается ...

Автор: LSD 13.7.2011, 13:41
Если не добавить секцию executions в POM
Код

                        <executions>
                            <execution>
                                <phase>install</phase>
                                <goals>
                                    <goal>deploy</goal>
                                </goals>
                            </execution>
                        </executions>

То плагин надо запускать руками:
Код

mvn cargo:deploy

Автор: 4epT 13.7.2011, 14:34
Ну я собственно руками и запускал, может нужно было прям из IDE запускать ?

Автор: LSD 13.7.2011, 14:45
Может уже пора показать POM и лог запуска или еще погадаем? smile 

Автор: 4epT 14.7.2011, 00:16
Вот собственно pom.xml:

Код

<build>
    <finalName>MavenProject</finalName>
    <plugins>
        <plugin>
       <groupId>org.codehaus.cargo</groupId>
       <artifactId>cargo-maven2-plugin</artifactId>
       <version>1.0.2</version>
       <configuration>
         <wait>true</wait>
         <container>
           <containerId>tomcat6x</containerId>
           <type>installed</type>
           <home>"/Users/Malakhov/apache-tomcat-6.0.32/"</home>
         </container>
         <configuration>
           <type>existing</type>
           <home>"/Users/Malakhov/apache-tomcat-6.0.32/"</home>
         </configuration>
         <deployer>
           <type>installed</type>
           <deployables>
             <deployable>
               <groupId>MavenProject</groupId>
               <artifactId>MavenProject</artifactId>
               <type>war</type>
             </deployable>
           </deployables>
         </deployer>
       </configuration>
     </plugin>
    </plugins>
  </build>


А вот при запуске стало сыпать вот такое:
Код

[ERROR] Failed to execute goal org.codehaus.cargo:cargo-maven2-plugin:1.0.2:deploy
 (default-cli) on project MavenProject: Execution default-cli 
of goal org.codehaus.cargo:cargo-maven2-plugin:1.0.2:deploy failed: Failed to create deployable 
for the parameters (container [id = [tomcat6x]], deployable type [war]). InvocationTargetException: Failed to parse
 Tomcat WAR file in [/Users/Malakhov/Documents/workspace/MavenProject/target/MavenProject.war]:
 Failed to find file [/Users/Malakhov/Documents/workspace/MavenProject/target/MavenProject.war]: 
/Users/Malakhov/Documents/workspace/MavenProject/target/MavenProject.war
 (No such file or directory) -> [Help 1]
[ERROR] 



раньше такого не было, вроде ничего не менял

Автор: LSD 14.7.2011, 09:45
Ну собственно вопрос: а файл:
Цитата
/Users/Malakhov/Documents/workspace/MavenProject/target/MavenProject.war

существует и корректный war архив?

Добавлено через 1 минуту и 39 секунд
И 
Код

<deployable>
    <groupId>MavenProject</groupId>
    <artifactId>MavenProject</artifactId>
    <type>war</type>
</deployable>

лучше заменить на:
Код

<deployable>
    <groupId>${project.groupId}</groupId>
    <artifactId>${project.artifactId}</artifactId>
    <type>${project.packaging}</type>
</deployable>

тогда при изменении имени файла, не придется менять настройки плагина.

Автор: 4epT 14.7.2011, 10:23
Цитата

существует и корректный war архив?


Если перед этим выполнить mvn install то war файл существует и он корректный ) так же если происходит выполнение mvn install, то указанные выше ошибки не сыпятся. Показать лог смогу только вечером так как ноут дома(

я почему то думал что mvn cargo:deploy включает в себя и install ...

Автор: Stolzen 14.7.2011, 11:06
Цитата(LSD @  13.7.2011,  14:41 Найти цитируемый пост)
Если не добавить секцию executions в POM
                        <executions>
                            <execution>
                                <phase>install</phase>
                                <goals>
                                    <goal>deploy</goal>
                                </goals>
                            </execution>
                        </executions>

Если сделать так, то инсталл будет включать в себя деплой

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)