gpt4 book ai didi

maven - 部署.war后运行Maven ant插件吗?

转载 作者:行者123 更新时间:2023-12-02 19:37:46 25 4
gpt4 key购买 nike

我目前正在尝试根据我的war文件创建一个docker镜像,该镜像将在部署时在目标文件夹中创建。但是,ant插件会在将maven war文件部署到目标文件夹之前执行命令。因此,尽管它尝试创建docker镜像,但由于尚未将其部署到目标文件夹中,因此找不到要添加的.war文件。

ant插件也在一个名为docker的单独配置文件中声明。尽管我读过Maven Lifecycle Doc,但找不到合适的方法来实现这一点。

这是我的.pom文件

<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">


<groupId>org.ravindu</groupId>
<modelVersion>4.0.0</modelVersion>
<artifactId>ravindu_test</artifactId>
<packaging>war</packaging>
<version>1.0.0</version>
<name>Ravindu_Test_Proj</name>

<dependencies>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-core</artifactId>
<version>[4.0,)</version>
</dependency>
<dependency>
<groupId>org.facebook4j</groupId>
<artifactId>facebook4j-core</artifactId>
<version>[2.1,)</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
</dependencies>

<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
<configuration>
<excludes>
<exclude>**/imported_js/**</exclude>
<exclude>**/jsqrcode/**</exclude>
<exclude>**/imported_css/**</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<webResources>
<resource>
<filtering>true</filtering>
<directory>src/main/webapp</directory>
<excludes>
<exclude>**/imported_js/**</exclude>
<exclude>**/jsqrcode/**</exclude>
<exclude>**/css/**</exclude>
<exclude>**/images/**</exclude>
<exclude>**/jquery-mobile/**</exclude>
</excludes>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
<finalName>ravTest</finalName>
</build>

<profiles>
<profile>
<id>docker</id>
<activation>
<file>
<exists>src/main/docker/Dockerfile</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target</outputDirectory>
<resources>
<resource>
<directory>src/main/docker</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>process-classes</id>
<phase>process-classes</phase>
<configuration>
<target>
<exec executable="docker">
<arg value="build"/>
<arg value="-t"/>
<arg value="ravindu_test"/>
<arg value="target"/>
</exec>
<!--<exec executable="docker">-->
<!--<arg value="push"/>-->
<!--<arg value="ravindu_test"/>-->
<!--</exec>-->
<!--<exec executable="docker">-->
<!--<arg value="tag"/>-->
<!--<arg value="-f"/>-->
<!--<arg value="ravindu_test"/>-->
<!--<arg value="ravindu_test"/>-->
<!--</exec>-->
<!--<exec executable="docker">-->
<!--<arg value="push"/>-->
<!--<arg value="ravindu_test:latest"/>-->
<!--</exec>-->
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>

以下是我的Dockerfile
# Pull base image
FROM tomcat:8-jre8

# Maintainer
MAINTAINER "Ravindu Fernando. <ravindu_fernando@gmail.com">

# Copy to images tomcat path
ADD /Ravindu_Test/target/mobile.war /usr/local/tomcat/webapps

最佳答案

我没有这个问题的确切答案。但是我试图解释我们解决这个问题的方法。 Maven是用于构建具有相同结构和构建阶段的标准项目的好工具。如果您想得到更复杂的东西,行家会抵抗它。因此,我们决定采用其他方法:

  • Maven仅用于构建应用程序(jar, war 等)。
  • 所有docker Artifact 均使用bash脚本创建,其中包含用于使用maven构建应用程序,构建docker镜像并将其推送到存储库的命令。

  • 我认为为此,bash比行家更方便和灵活

    关于maven - 部署.war后运行Maven ant插件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42795203/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com