Как настроить дополнительный контекстный путь для плагина Maven-Tomcat? - PullRequest
5 голосов
/ 08 августа 2011

Я использую Maven 3.0.3 с плагином Tomcat.Используя Maven и Tomcat, я хотел бы развернуть встроенный экземпляр сайта.У меня вопрос, как мне настроить дополнительный контекстный путь на моем встроенном сервере Tomcat?Ниже приведена моя конфигурация Tomcat, но либо моя "" спецификация недействительна, либо содержимое этого файла (ниже) недопустимо ...

<Context path="/all-new-jx-web" docBase="/Users/davea/Documents/workspace/NissanUSA2/Technology/nna/mycousa/jx/target/web">

, потому что когда я вызываю

mvn clean -Dmaven.test.skip=true verify -Ptomcat tomcat:run

, ни один из URL-адресов, сопоставленных с "/ all-new-jx-web" (мой дополнительный путь к контексту), не отображается (ресурсы не обслуживаются Tomcat).Есть идеи почему?Ниже приведен мой профиль tomcat из моего файла pom.xml…

            <profile>
                    <id>tomcat</id>
                    <build>
                            <plugins>
                                    <plugin>
                                            <groupId>org.codehaus.mojo</groupId>
                                            <artifactId>tomcat-maven-plugin</artifactId>
                                            <version>1.1</version>
                                            <configuration>
                                                    <contextFile>config/tomcat/context.xml</contextFile>
                                                    <mode>context</mode>
                                                    <addContextWarDependencies>true</addContextWarDependencies>
                                                    <charset>UTF-8</charset>
                                                    <path>/all-new-jx</path>
                                                    <update>true</update>
                                                    <warDirectory>target/${project.artifactId}-${project.version}.${project.packaging}</warDirectory>
                                                    <systemProperties>
                                                            <JAVA_OPTS>-Xms256m -Xmx512m -XX:MaxPermSize=256m -XX:NewRatio=6
                                                                    -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
                                                                    -verbose:gc"</JAVA_OPTS>
                                                    </systemProperties>
                                            </configuration>
                                    </plugin>
                            </plugins>
                    </build>
            </profile>

Спасибо за любые решения и дополнительные действия по устранению неполадок, - Dave

Ответы [ 4 ]

4 голосов
/ 08 апреля 2012

У меня была та же проблема. Я попытался указать местоположение для внешнего сервера XML, но я смог запустить свой проект.В конечном итоге я изменил код плагина tomcat, добавив дополнительный статический путь к контексту.

// Snippet from AbstractRunMojo.java

            String appBase = new File(configurationDir, "webapps")
                    .getAbsolutePath();
            Host host = container.createHost("localHost", appBase);

            host.addChild(context);
            // Adding static context
            createStaticContext(container, context, host);//More code after this


    private void createStaticContext(final Embedded container, Context context,
        Host host) {
    if (null != staticContextDocbase) {
        Context ctx1 = container.createContext(staticContextPath,
                staticContextDocbase);
        ctx1.setPrivileged(true);
        Wrapper servlet = context.createWrapper();
        servlet.setServletClass(DefaultServlet.class.getName());
        servlet.setName("staticContent");
        ctx1.addChild(servlet);
        ctx1.addServletMapping("/", "staticContent");
        host.addChild(ctx1);
    }
}
2 голосов
/ 27 ноября 2012

У вас есть правильная идея с вашим элементом xml contextFile, но попробуйте использовать явный путь вместо использования относительного пути.

<contextFile>${basedir}/config/tomcat/context.xml</contextFile>

${basedir} - это папка, в которой находится ваш pom.xml. Возможно, вам придется изменить эту часть, если это не подходит для вашего проекта.

1 голос
/ 03 июля 2012

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

  1. объявить solr как type = war, scope = зависимость tomcat
  2. использовать плагин tomcat maven (версия 1.1) с addContextWarDependencies
  3. addсистемное свойство для solr home, как показано ниже

, тогда можно запустить maven, например: mvn tomcat: run .Имейте в виду, что для java в этом сценарии потребуется много памяти, поэтому перед запуском maven выполните export MAVEN_OPTS = "- Xmx1536m -XX: MaxPermSize = 512m" , например.

Pom.xml похож на то, где мы предполагаем, что есть некоторые свойства - , включая одно, называемое solr.home - для чтения из файла конфигурации:

<project>
  ...
  <dependencies>
  ...
    <dependency>
      <groupId>org.apache.solr</groupId>
      <artifactId>solr</artifactId>
      <version>3.3.0</version>
      <type>war</type>
      <scope>tomcat</scope>
    </dependency>
  </dependencies>
  <build>
  ...
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>tomcat-maven-plugin</artifactId>
      <version>1.1</version>
      <configuration>
        <addContextWarDependencies>true</addContextWarDependencies>
        <systemProperties>
          <property.you.need>${example.property.yours}</property.you.need>
          <solr.solr.home>${solr.home}</solr.solr.home>
        </systemProperties>
      </configuration>
    </plugin>
    ...
  </build>
</project>

После этого можно достичь Solr:

http://localhost:8080/solr/admin

и ваша заявка в

http://localhost:8080/your-app-id/
1 голос
/ 08 августа 2011

Для этого используйте конфигурацию serverXml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...