【问题标题】:Jetty Run War Using only command lineJetty Run War 仅使用命令行
【发布时间】:2011-04-07 02:36:49
【问题描述】:

是否可以只使用命令行来运行jetty,只使用指定的war 文件和上下文路径。

类似:

java -jar $jettyHome/start.jar -Dwar.location=myApp.war -DcontextPath=/myApp OPTIONS=default,plus,jsp

【问题讨论】:

  • 风滚草徽章,然后是这个问题的著名问题!

标签: jetty war


【解决方案1】:

使用jetty-runner-minimal:

$ git clone https://github.com/kissaten/jetty-runner-minimal
$ cd jetty-runner-minimal
$ mvn package

$ wget https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war
$ java -jar target/dependency/jetty-runner.jar sample.war

【讨论】:

    【解决方案2】:

    从命令行安装 maven:

    sudo apt install maven
    

    在 pom.xml: 所在文件夹的命令行中运行战争

    mvn jetty:run-war
    

    【讨论】:

      【解决方案3】:

      我已经编写了一个小型命令行应用程序/Maven 原型,它的工作方式就像我认为这一切最初应该具有的那样。引导应用程序允许您通过将路径传递给 WAR 和您的端口来启动您选择的 servlet 容器(Jetty、Tomcat、GlassFish)。

      使用 Maven,您可以创建和打包您自己的这个简单应用的实例:

      mvn archetype:generate \
          -DarchetypeGroupId=org.duelengine \
          -DarchetypeArtifactId=war-bootstrap-archetype \
          -DarchetypeVersion=0.2.1
      

      然后你像这样启动它:

      java -jar bootstrap.jar -war myapp.war -p 8080 -c /myapp --jetty
      

      这里是实用程序和原型的来源:https://bitbucket.org/mckamey/war-bootstrap

      【讨论】:

      • bitbucket URL 损坏或权限被删除
      【解决方案4】:

      使用jetty runner

       java -jar jetty-runner.jar my.war
      

      使用 Maven,您可以通过添加到您的 pom.xml 来安装:

      <build>
          ...
          <plugins>
              ...
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-dependency-plugin</artifactId>
                  <version>2.3</version>
                  <executions>
                      <execution>
                          <phase>package</phase>
                          <goals><goal>copy</goal></goals>
                          <configuration>
                              <artifactItems>
                                  <artifactItem>
                                      <groupId>org.mortbay.jetty</groupId>
                                      <artifactId>jetty-runner</artifactId>
                                      <version>7.5.4.v20111024</version>
                                      <destFileName>jetty-runner.jar</destFileName>
                                  </artifactItem>
                              </artifactItems>
                          </configuration>
                      </execution>
                  </executions>
              </plugin>
          </plugins>
      </build>
      

      运行:

      mvn package
      

      并用作:

      java -jar target/dependency/jetty-runner.jar target/*.war
      

      http://www.eclipse.org/jetty/documentation/current/runner.html

      http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/

      【讨论】:

      • 同样,对于 tomcat 有 webapp-runner:github.com/jsimone/webapp-runner
      • 不知道为什么,但这给出了java.lang.NoClassDefFoundError: org/apache/tomcat/util/IntrospectionUtils 错误。有关系吗?
      【解决方案5】:

      如果您设置了适当的启动配置 (jetty.xml),这是可能的。

      开箱即用,jetty 没有附带执行此操作的 jetty.xml,但您可以轻松编写一个。

      这意味着你要么

      1. 有一个更像的命令行

        java -jar $jettyHome/start.jar -Dwar.location=myApp.war -DcontextPath=/myApp jetty-myapp.xml
        

        java -jar $jettyHome/start.jar -Dwar.location=myApp.war -DcontextPath=/myApp etc/jetty.xml etc/jetty-plus.xml jetty-deploy-app.xml
        
      2. 自己覆盖 etc/jetty.xml 并将所需的信息放入其中。

      Jetty 启动非常简单,因此它实际上只是生成一个 XML 文件来满足您的需求。 该 XML 文件可以从系统属性中读取值,因此您可以使用各种“-D”选项。

      【讨论】:

      • 通过“将您想要的信息放入 [ect/jetty.xml]”这是否意味着我可以使用命令行中传递的系统属性配置 etc/jetty.xml,然后能够运行*我的盒子上的任何&战争文件都带有一个命令,或者配置是针对特定战争的?
      • 是的,应该可以这样做。我实际上还没有做过,所以可能有一些我没有考虑过的障碍,但是 Jetty 的 XML 配置格式允许你做几乎任何你需要的事情,所以我看不出它不起作用的原因。如果我有时间,我会自己尝试一下。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-30
      • 2015-05-28
      • 2012-06-24
      • 1970-01-01
      • 2018-02-23
      相关资源
      最近更新 更多