我试图弄清楚是否可以使用 maven 从存储库下载战争工件并使用 jetty 插件启动它。
原因是我希望我的一位客户通过获取我的 CI 服务器上传到我的公司 Maven 存储库的构建来自动使用我的一个项目的最新版本。
这可能吗?如果是...怎么办?
我不知道码头插件是否可以,但货物插件绝对可以。
你可以配置 cargo 下载一个版本的 jetty 和你想要运行的 war 文件。这是我用来部署到 tomcat 的配置,但它不应该与码头所需的配置相差太大。我们甚至使用这种方式在同一个 tomcat 中部署多个战争。
我的做法是先下载war和tomcat(作为依赖),然后使用依赖插件解压war文件(这只是因为我添加了一些配置文件),然后告诉cargo从所在文件夹启动web应用我解压了战争。
<dependency>
<groupId>org.apache</groupId>
<artifactId>tomcat</artifactId>
<version>${tomcat.version}</version>
<type>zip</type>
</dependency>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>unpack war and configuration</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>war-group-id</groupId>
<artifactId>war-artifact-id</artifactId>
<version>version</version>
<type>war</type>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}/war
</outputDirectory>
</artifactItem>
</artifactItems>
<includes>**/*</includes>
</configuration>
</execution>
</executions>
</plugin>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<container>
<containerId>tomcat6x</containerId>
<output>${project.build.directory}/logs/container.log</output>
<log>${project.build.directory}/logs/cargo.log</log>
<append>false</append>
<zipUrlInstaller>
<url>file:///${settings.localRepository}/org/apache/tomcat/${tomcat.version}/tomcat-${tomcat.version}.zip
</url>
</zipUrlInstaller>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<classpath>shared</classpath>
</dependency>
</dependencies>
</container>
<configuration>
<type>standalone</type>
<home>${project.build.directory}/tomcat6x</home>
<deployables>
<deployable>
<location>${project.build.directory}/war</location>
<type>war</type>
<properties>
<context>/context</context>
</properties>
</deployable>
</deployables>
<properties>
<cargo.servlet.port>${cargo.servlet.port}</cargo.servlet.port>
<cargo.rmi.port>${cargo.rmi.port}</cargo.rmi.port>
<cargo.tomcat.ajp.port>${cargo.tomcat.ajp.port}</cargo.tomcat.ajp.port>
</properties>
</configuration>
</configuration>
</plugin>
</plugins>
</pluginManagement>