java - 在 vscode 中对源/web 内容修改自动将 .war 部署到 Tomcat

标签 java eclipse maven tomcat visual-studio-code

我正试图停止使用 Eclipse JEE 作为我的主要 IDE,并且由于 VSCode 现在有一些 Java 支持,我正试图跳槽。我现在有两个问题,如果我无法纠正它们,我将被迫将 Eclipse 用作 Tomcat .war 部署程序。

是否可以让 VSCode 执行或具有与 Eclipse 相同的自动部署 .war 和动态发布更改的功能?

我知道当前用于 vscode 的 Tomcat For Java 扩展可以选择部署分解的 .war,但这会给我 javax.serverFilter 错误,即使我添加了 pom.xml 中提供的 javax.servlet-api 依赖项.

它还为我提供了手动创建和部署 .war 的选项,它确实有效,但对于小的修改来说这非常烦人。

我尝试在我的 pom.xml 中添加 tomcat7-maven-plugin 并运行以下命令以实现更自动化的部署:

cmd /c mvn tomcat7:deploy -DskipTests -f "c:\Users\user\git\MyWebApp\pom.xml"

但是我尝试过的每个配置都给了我同样的错误:

I/O exception (java.net.SocketException) caught when processing request: Connection reset by peer: socket write error

我确实尝试了这些链接中提供的所有解决方案:

Tomcat 7: Connection reset by peer or Software caused connection abort

Tomcat deploy using tomcat7-maven-plugin fails with error "Cannot invoke Tomcat manager: Connection reset by peer: socket write error"

maven tomcat deployment producing error

Socket write error when I try to deploy maven project to tomcat

现在即使我设法修复了我的套接字写入错误,我仍然不知道我是否能够创建一个任务或检测修改并将我的更改重新发布到我的 Tomcat 的东西。 有什么想法吗?

我正在使用:

Tomcat 9

Apache maven 3.6.1

tomcat7-maven-插件 2.2

javax.servlet-api 3.1

Java 版 Tomcat 0.11.1

带有所有相关 Java 扩展的 VSCode 1.35.1

编辑:这是我的 pom.xml

<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MyWebApp</groupId>
<artifactId>MyWebApp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
</dependencies>
<build>
    <sourceDirectory>src</sourceDirectory>
    <testSourceDirectory>test</testSourceDirectory>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <url>http://localhost:8080/manager/text</url>
                <server>TomcatServer</server>
                <username>admin</username>
                <password>admin</password>
                <path>/MyWebApp</path>
                <update>true</update>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.1</version>
            <configuration>
                <warSourceDirectory>WebContent</warSourceDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>

还有我的settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
 http://maven.apache.org/xsd/settings-1.0.0.xsd">
 <servers>
     <server>
       <id>TomcatServer</id>
       <username>admin</username>
       <password>admin</password>
     </server>
 </servers>

和tomcat-users.xml

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
          version="1.0">
<role rolename="manager"/>
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-script"/>
</tomcat-users>

最佳答案

尝试像这样更改 tomcat-user.xml :

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
      version="1.0">
   <role rolename="admin"/>
   <role rolename="manager"/>
   <role rolename="manager-script"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="admin" roles="admin,manager,manager-script,manager-gui"/>
</tomcat-users>

关于java - 在 vscode 中对源/web 内容修改自动将 .war 部署到 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56719511/

相关文章:

java - 通过传递txt文件创建一个数组并将数组引用变量传递给heapsort方法

php - Eclipse PDT 调试 Web 应用程序 : evaluating expressions in a console

java - IntelliJ IDEA 不允许我单击 jar 并查看内容

Jenkins 上的 Java 本地化测试失败

java - maven-checkstyle-plugin 不适用于 macOS 上的 google_checks.xml

java - org.hibernate.MappingException : Unable to find column with logical name Id

java - 如何创建返回 ArrayList 的方法

java - HibernateException : Unable to resolve entity name from Class [java. lang.Boolean] 预期的实例/子类

java - 在 eclipse 中调试注释处理器

java - 通过 Windows ODBCCONF 命令行连接到 Paradox 数据库