Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将本地tomcat版本与maven一起使用_Java_Maven_Tomcat - Fatal编程技术网

Java 如何将本地tomcat版本与maven一起使用

Java 如何将本地tomcat版本与maven一起使用,java,maven,tomcat,Java,Maven,Tomcat,以前可能有人问过这个问题(如果是请链接我),但当我搜索时,我发现了一大堆如何在tomcat上运行maven、如何连接IDE来实现这一点(几乎所有这些都是IDE/配置问题)、如何在tomcat中使用maven插件等相关问题 我知道我可以使用intellij或eclipse之类的IDE来创建一个带有maven和tomcat的web应用程序项目,因为设置和配置的缘故,它们只会运行。我正在玩游戏,试图看看如何手动操作(希望能学到一些东西) 现在我有一个正在运行的tomcat项目。基本上我是从下载Tomc

以前可能有人问过这个问题(如果是请链接我),但当我搜索时,我发现了一大堆如何在tomcat上运行maven、如何连接IDE来实现这一点(几乎所有这些都是IDE/配置问题)、如何在tomcat中使用maven插件等相关问题

我知道我可以使用intellij或eclipse之类的IDE来创建一个带有maven和tomcat的web应用程序项目,因为设置和配置的缘故,它们只会运行。我正在玩游戏,试图看看如何手动操作(希望能学到一些东西)

现在我有一个正在运行的tomcat项目。基本上我是从下载Tomcat8的。然后我提取了示例文件,并让它运行我自己的文件

我想用maven把这个包起来

我创建了一个典型的maven项目(示例):

我应该把tomcat文件放在哪里? 在webApp中

运行我正在使用的tomcat

bin/catalina.sh run
从我的tomcat文件。我可以从pom运行它吗,或者我需要创建一个java文件来调用它吗

如果我在Intellij中(通过自动创建过程)执行此操作,它将全部运行。但我不知道每个文件是如何链接的,除了通过与.idea相关的方式。例如,没有tomcat文件。虽然pom.xml中引用了server.xml,但我看不到它

<plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat6-maven-plugin</artifactId>
                    <version>2.3-SNAPSHOT</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.3-SNAPSHOT</version>
                    <executions>
                        <execution>
                            <id>tomcat-run</id>
                            <goals>
                                <goal>exec-war-only</goal>
                            </goals>
                            <phase>package</phase>
                            <configuration>
                                <path>foo</path>
                                <!-- optional, needed only if you want to use a preconfigured server.xml file -->
                                <serverXml>src/main/tomcatconf/server.xml</serverXml>
                                <!-- optional values which can be configurable -->
                                <attachArtifactClassifier>default value is exec-war but you can customize</attachArtifactClassifier>
                                <attachArtifactClassifierType>default value is jar</attachArtifactClassifierType>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

org.apache.tomcat.maven
tomcat6 maven插件
2.3-2
org.apache.tomcat.maven
tomcat7 maven插件
2.3-2
雄猫赛跑
仅限执行战争
包裹
福
src/main/tomcatconf/server.xml
默认值为exec war,但您可以自定义
默认值是jar
但在本例中,它是一个插件,似乎与我正在做的略有不同(如果这是错误的,请纠正我,我是maven/tomcat新手)

我对intellij的理解是maven项目是在tomcat上运行的。我想使用maven运行有自己文件的tomcat项目。(如果您能更好地解释这一点或在这里纠正我,我将非常感激)它们都以某种方式引用了server.xml文件

------ 编辑 好的,我重读:mkyong.com/maven/如何将基于maven的war文件部署到tomcat上

我相信在tomcat文件(从apache示例下载)中运行tomcat catalina.sh将允许我保留路径。我正在努力解决的问题如下:

<plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat6-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <url>http://localhost:8080/manager</url>
            <server>TomcatServer</server>
            <path>/mkyongWebApp</path>
        </configuration>
    </plugin>

org.apache.tomcat.maven
tomcat6 maven插件
2.2
http://localhost:8080/manager
TomcatServer
/mkyongWebApp
示例使用tomcat的方式是将其用作插件。这意味着它永远不会读取我的tomcat文件。如何让它运行本地tomcat文件

我在这里找到了一个解决方案:

例如,将serverXml设置为指向本地tomcat安装

<project>
  ...
  <packaging>war or pom</packaging>
  ...
  <build>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.3-SNAPSHOT</version>
        <executions>
          <execution>
            <id>tomcat-run</id>
            <goals>
              <goal>exec-war-only</goal>
            </goals>
            <phase>package</phase>
            <configuration>
              <path>foo</path>
              <!-- optional, needed only if you want to use a preconfigured server.xml file -->
              <serverXml>src/main/tomcatconf/server.xml</serverXml>
              <!-- optional values which can be configurable -->
              <attachArtifactClassifier>default value is exec-war but you can customize</attachArtifactClassifier>
              <attachArtifactClassifierType>default value is jar</attachArtifactClassifierType>
            </configuration>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>

...
战争还是pom
...
...
...
org.apache.tomcat.maven
tomcat7 maven插件
2.3-2
雄猫赛跑
仅限执行战争
包裹
福
src/main/tomcatconf/server.xml
默认值为exec war,但您可以自定义
默认值是jar
...
...
...
我在这里找到了一个解决方案:

例如,将serverXml设置为指向本地tomcat安装

<project>
  ...
  <packaging>war or pom</packaging>
  ...
  <build>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.3-SNAPSHOT</version>
        <executions>
          <execution>
            <id>tomcat-run</id>
            <goals>
              <goal>exec-war-only</goal>
            </goals>
            <phase>package</phase>
            <configuration>
              <path>foo</path>
              <!-- optional, needed only if you want to use a preconfigured server.xml file -->
              <serverXml>src/main/tomcatconf/server.xml</serverXml>
              <!-- optional values which can be configurable -->
              <attachArtifactClassifier>default value is exec-war but you can customize</attachArtifactClassifier>
              <attachArtifactClassifierType>default value is jar</attachArtifactClassifierType>
            </configuration>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>

...
战争还是pom
...
...
...
org.apache.tomcat.maven
tomcat7 maven插件
2.3-2
雄猫赛跑
仅限执行战争
包裹
福
src/main/tomcatconf/server.xml
默认值为exec war,但您可以自定义
默认值是jar
...
...
...

尝试阅读@rpc1嘿,谢谢你的评论。实际上我读过。也许我误解了。但我的理解是,它对tomcat发动了一场专业战争。我不想在tomcat上运行maven项目。我正在尝试使用maven来运行我的tomcat项目。如果您查看tomcat basic下载,您将看到它启动了一个网页。在这种情况下,我不想超越那个网页。我知道这是一个奇怪的要求,但这只是我想尝试的练习。@rpc1-hmm也许你是对的。我把这一页又读了一遍。我不想要像/mkyoungWebApp这样的东西,但从他的例子来看,原始的tomcat目录没有被覆盖。这是真的吗?你能证实吗?如果我不想要任何maven创建的目录,我可以省略路径吗?@rpc1您是否知道关于如何解决冲突的文档链接?如果我指定了一个与Tomcat冲突的maven路径怎么办?我想,如果应用程序存在,您将出现一个错误:[INFO]无法调用Tomcat manager:FAIL-应用程序已经存在于path/mywebappTry to read@rpc1嘿,感谢您的评论。实际上我读过。也许我误解了。但我的理解是,它对tomcat发动了一场专业战争。我不想在tomcat上运行maven项目。我正在尝试使用maven来运行我的tomcat项目。如果你