配置maven cargo plugin jetty容器以获取静态内容

时间:2016-04-14 10:43:34

标签: html maven jetty cargo

我需要配置从maven货运插件运行的jetty指向静态内容,Ive查看了jetty文档,我无法看到如何将配置应用于jetty作为货物的一部分运行。我想配置webApp部分并将资源库设置为构建为此构建模块的角度应用程序:

 <execution>
                  <id>start jetty - angular webapp</id>
                  <phase>pre-integration-test</phase>
                  <goals>
                    <goal>start</goal>
                  </goals>
                  <configuration>                           
                        <container>
                            <containerId>jetty7x</containerId>
                            <type>embedded</type>
                        </container>
                        <webApp>
                            <resourceBases>
                                <contextPath>/</contextPath>
                                <resourceBase>../calculator-web/dist</resourceBase>
                            </resourceBases>
                        </webApp>   
                        <configuration> 
                            <properties>                    
                                <cargo.servlet.port>11000</cargo.servlet.port>                                          
                            </properties>                               
                        </configuration>
                    </configuration>
                </execution>

Jetty启动但似乎忽略了这个配置,我只得到了我的index.html文件的一个404。

有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

虽然货物似乎不直接支持Jetty的重新加载自动热重新部署功能,但至少可以提供“未完成”的静态内容并立即获取更改,例如在开发过程中运行嵌入式容器。

我目前的解决方案是重新配置Jetty's DefaultServlet,将resourceBase指向项目的“实时”源目录(例如${basedir}/src/main/webapp)而不是可部署的default (build) <location/>(例如{ {1}})和(只是为了确定)disabling useFileMappedBuffer以避免Windows中的文件锁定:

  1. 复制Jetty的webdefault.xml(例如${project.build.directory}/${project.build.finalName},例如,在单独运行货物集装箱时)到target/cargo/configurations/jetty.../etc/
  2. 修改其src/main/jetty/my-webdefault.xml初始化参数:

    DefaultServlet
  3. <web-app ...> <!-- src/main/jetty/my-webdefault.xml --> : <servlet> <servlet-name>default</servlet-name> <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class> : <init-param> <!-- relative to pom.xml, or wherever cargo runs --> <param-name>resourceBase</param-name> <param-value>./src/main/webapp</param-value> </init-param> <init-param> <!-- to avoid file locking in Windows, use: false --> <param-name>useFileMappedBuffer</param-name> <param-value>false</param-value> </init-param> </servlet> </web-app> copy the new config file cargo-maven2-plugin放入(Jetty)容器的my-webdefault.xml目录中:

    etc/
  4. 使用<project ...> <!-- pom.xml --> : <build> : <plugins> : <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>...</version> <configuration> <container>...</container> <configuration> <configfiles> <configfile> <file>${basedir}/src/main/jetty/my-webdefault.xml</file> <tofile>etc/webdefault.xml</tofile> </configfile> </configfiles> <properties>...</properties> </configuration> <deployables>...</deployables> </configuration> </plugin> </plugins> </build> </project>
  5. 运行

    PS。我尝试使用mvn clean verify cargo:run在单独的上下文中触发简单的static content ResourceHandler(例如scratch.xml)并未成功。