2013-05-23 1 views
0

Команда «grails dev war» отлично развертывает на моем локальном сервере Tomcat6 с созданной войной, которая содержит следующие папки:В Grails команда «tomcat: deploy» не генерирует полную войну, так как команда «dev war» делает

css 
images 
js 
META-INF 
plugins 
WEB-INF 

К сожалению, мне нужно, что команда кот: развернуть работы тоже (я на самом деле с помощью: кот: перераспределить -DskipTests). Но Tomcat дает следующую ошибку:

2013-05-23 05:12:53,094 [http-8080-4] ERROR digester.Digester - Parse Fatal Error at line 1 column 1: Final de archivo prematuro. 
org.xml.sax.SAXParseException; systemId: jndi:/localhost/Alojamiento/WEB-INF/web.xml; lineNumber: 1; columnNumber: 1; Final de archivo prematuro. 
    at 

Я добавил пустой web.xml, чтобы Maven компиляции. Он также пуст в порожденной войне. Таким образом, это, вероятно, причина проблемы («grails dev war» генерирует web.xml с кодом). Futhermore, генерируемая война содержит только следующие папки:

META-INF 
WEB-INF 

Чтобы быть в состоянии использовать «кот развертывание», я добавил следующий код в pom.xml (после добавления POM правда, работаю «создать-POM группу "и другие изменения конфигурации):

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>tomcat-maven-plugin</artifactId> 
    <configuration> 
     <url>http://127.0.0.1:8080/manager</url>      
     <server>TomcatServer</server> 
    </configuration> 
</plugin> 

UPDATE 1 Мой полный pom.xml:

<?xml version="1.0" encoding="utf-8"?> 
<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>alojamiento.ingenierosIW</groupId> 
    <artifactId>Alojamiento</artifactId> 
    <packaging>war</packaging> 
    <version>0.1</version> 
    <name>Alojamiento</name> 
    <description>Alojamiento</description> 

    <properties> 
     <grails.version>2.2.2</grails.version> 
    </properties> 

    <dependencies> 

     <dependency> 
      <groupId>org.grails</groupId> 
      <artifactId>grails-dependencies</artifactId> 
      <version>${grails.version}</version> 
      <type>pom</type> 
     </dependency> 


     <dependency> 
      <groupId>org.grails</groupId> 
      <artifactId>grails-test</artifactId> 
      <version>${grails.version}</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.grails</groupId> 
      <artifactId>grails-plugin-testing</artifactId> 
      <version>${grails.version}</version> 
      <scope>test</scope> 
     </dependency> 


    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.25</version> 
     <scope>runtime</scope> 

    </dependency> 


     <dependency> 
      <groupId>org.grails.plugins</groupId> 
      <artifactId>tomcat</artifactId> 
      <version>${grails.version}</version> 
      <scope>provided</scope> 
      <type>zip</type> 
     </dependency> 

    <dependency> 
     <groupId>org.grails.plugins</groupId> 
     <artifactId>spring-security-core</artifactId> 
     <version>1.2.7.3</version> 
     <scope>compile</scope> 
     <type>zip</type> 
    </dependency> 


    <dependency> 
     <groupId>org.grails.plugins</groupId> 
     <artifactId>cache</artifactId> 
     <version>1.0.1</version> 
     <scope>compile</scope> 
     <type>zip</type> 
    </dependency> 


    <dependency> 
     <groupId>org.grails.plugins</groupId> 
     <artifactId>resources</artifactId> 
     <version>1.2.RC2</version> 
     <scope>runtime</scope> 
     <type>zip</type> 
    </dependency> 


    <dependency> 
     <groupId>org.grails.plugins</groupId> 
     <artifactId>db-reverse-engineer</artifactId> 
     <version>0.5</version> 
     <scope>runtime</scope> 
     <type>zip</type> 
    </dependency> 


    <dependency> 
     <groupId>org.grails.plugins</groupId> 
     <artifactId>jquery</artifactId> 
     <version>1.8.3</version> 
     <scope>runtime</scope> 
     <type>zip</type> 
    </dependency> 


    <dependency> 
     <groupId>org.grails.plugins</groupId> 
     <artifactId>database-migration</artifactId> 
     <version>1.3.2</version> 
     <scope>runtime</scope> 
     <type>zip</type> 
    </dependency> 


    <dependency> 
     <groupId>org.grails.plugins</groupId> 
     <artifactId>hibernate</artifactId> 
     <version>2.2.2</version> 
     <scope>runtime</scope> 
     <type>zip</type> 
    </dependency> 


    <dependency> 
     <groupId>org.grails.plugins</groupId> 
     <artifactId>tomcat</artifactId> 
     <version>2.2.2</version> 
     <scope>provided</scope> 
     <type>zip</type> 
    </dependency> 



    </dependencies> 

    <build> 
     <pluginManagement /> 

     <plugins> 
      <!-- Disables the Maven surefire plugin for Grails applications, as we have our own test runner --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <skip>true</skip> 
       </configuration> 
       <executions> 
        <execution> 
         <id>surefire-it</id> 
         <phase>integration-test</phase> 
         <goals> 
          <goal>test</goal> 
         </goals> 
         <configuration> 
          <skip>false</skip> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-clean-plugin</artifactId> 
       <version>2.4.1</version> 
       <configuration> 
        <filesets> 
         <fileset> 
          <directory>plugins</directory> 
          <includes> 
           <include>**/*</include> 
          </includes> 
          <followSymlinks>false</followSymlinks> 
         </fileset> 
        </filesets> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.grails</groupId> 
       <artifactId>grails-maven-plugin</artifactId> 
       <version>${grails.version}</version> 
       <configuration> 
        <!-- Whether for Fork a JVM to run Grails commands --> 
        <fork>true</fork> 
       </configuration> 
       <extensions>true</extensions> 
      </plugin> 


      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>tomcat-maven-plugin</artifactId> 
       <configuration> 
        <!--<ignorePackaging>true</ignorePackaging>--> 
        <addContextWarDependencies>true</addContextWarDependencies> 
        <url>http://127.0.0.1:8080/manager</url>      
        <server>TomcatServer</server> 
        <!--<username>admin</username>--> 
        <!-- <password>password</password>--> 
        <!-- <path>/u74937912-practica-WAR</path>--> 
       </configuration> 
      </plugin> 


     </plugins> 
    </build> 

    <repositories> 
     <repository> 
      <id>grails</id> 
      <name>grails</name> 
      <url>http://repo.grails.org/grails/core</url> 
     </repository> 
     <repository> 
      <id>grails-plugins</id> 
      <name>grails-plugins</name> 
      <url>http://repo.grails.org/grails/plugins</url> 
     </repository> 
    </repositories> 

    <profiles> 
     <profile> 
      <id>tools</id> 
      <activation> 
       <property> 
        <name>java.vendor</name> 
        <value>Sun Microsystems Inc.</value> 
       </property> 
      </activation> 
      <dependencies> 
       <dependency> 
        <groupId>com.sun</groupId> 
        <artifactId>tools</artifactId> 
        <version>${java.version}</version> 
        <scope>system</scope> 
        <systemPath>${java.home}/../lib/tools.jar</systemPath> 
       </dependency> 
      </dependencies> 
     </profile> 
    </profiles> 
</project> 
+0

Вы можете разместить свой полный POM? Похоже, что плагин tomcat для maven использует артефакт WAR, генерируемый maven, а не тот, который генерируется плагином grails (который, как я полагаю, вы настроили в своем pom?) – leebutts

+0

Я обновил его с помощью pom.xml (UPDATE 1) , Как я могу его настроить? Я действительно пытался узнать в Google без везения – chelder

ответ

1

Он прекрасно работает с этим:

КОНФИГУРАЦИИ

Раньше, если вы используете Eclipse, с плагином М2Э, здесь объясняется, как настроить Eclipse, для того, чтобы использовать Tomcat с ним: tomcat-maven-plugin: Server returned HTTP response code: 403

Теперь нам нужен правильный файл settings.xml в C: \ Users \ user.m2 с тем же именем пользователя и паролем, что и tomcat-users.xml. Затем, мы должны иметь наш pom.xml сконфигурировано следующим образом:

<packaging>war</packaging> 


<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>tomcat-maven-plugin</artifactId> 
<configuration> 
    <url>http://127.0.0.1:8080/manager</url> 
    <!-- The next server must be the same than the one in settings.xml (at C:\Users\user\.m2): --> 
    <server>TomcatServer</server> 
</configuration> 
</plugin> 


<plugin> 
    <groupId>org.grails</groupId> 
    <artifactId>grails-maven-plugin</artifactId> 
    <version>${grails.version}</version> 
    <extensions>true</extensions> 
    <executions> 
     <execution> 
      <goals> 
       <goal>init</goal> 
       <goal>maven-clean</goal> 
       <goal>validate</goal> 
       <goal>config-directories</goal> 
       <goal>maven-compile</goal> 
       <goal>maven-test</goal> 
       <goal>maven-war</goal> 
       <goal>maven-functional-test</goal> 
      </goals> 
     </execution> 
     </executions> 
</plugin> 

MAVEN КОМАНДУ РАЗВЕРТЫВАНИЯ:

Следующая команды получить значение конфигурации нашей базы данных из источника данных.заводной - производство environmnent:

  • кот: перераспределить
  • кота: перераспределить -DskipTests
  • Grails: войны кота: перераспределить -DskipTests

Чтобы получить значения из среды разработки, команды являются следующими:

  • grails: war tomcat: redeploy -Dgrails.env = разработка гравий: война
  • кот: перераспределить -Dgrails.env = Разработка -DskipTests

Примечание1: если мы не добавить -DskipTests (ни к эксплуатационных испытаний, прежде чем до развертывания), и некоторые испытания терпят неудачу, он не будет разворачивать.

Примечание2: в затмении (с плагином М2Э для мавена установленных), вы должны ввести эти команды в следующем поле:

  • Run - Run Configurations - Maven сборки - Цели

ОБНОВЛЕНИЕ 1

Не забудьте создать пустой web.xml под src/main/webapp/WEB-INF!

UPDATE 2

Не забудьте сказать Grails использовать pom.xml: http://grails.org/doc/2.3.x/ref/Command%20Line/create-pom.html

+0

Я думаю, что ключевая часть связывает плагин Grails с фазой maven-war. Вы должны принять свой собственный ответ, поскольку это хорошая ссылка для правильной конфигурации плагина grails. – leebutts

+0

Конечно! Но я должен ждать 17 часов для этого;) – chelder

0

Попробуйте

Надеемся, что грабли присоединятся к сборке правильного артефакта WAR, чтобы пустая по умолчанию не была загружена.

+0

Спасибо, но, к сожалению, такая же ошибка происходит, и сгенерированная война выглядит одинаково. – chelder

+0

Возможно, мне нужно настроить вручную tomcat-maven-plugin, чтобы включить все в войну? – chelder