除了使用mvn clean软件包之外,如何在Eclipse中以稳定的方式向Tomcat服务器添加servlet项目

除了使用mvn clean软件包之外,如何在Eclipse中以稳定的方式向Tomcat服务器添加servlet项目,eclipse,maven,tomcat,Eclipse,Maven,Tomcat,我在Tomcat中运行了一个非常直接的servlet,它的开头大致如下 import javax.ws.rs.ApplicationPath; import org.glassfish.jersey.server.ResourceConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import security.AuthenticationFilter; @ApplicationPath("/"

我在Tomcat中运行了一个非常直接的servlet,它的开头大致如下

import javax.ws.rs.ApplicationPath;

import org.glassfish.jersey.server.ResourceConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import security.AuthenticationFilter;

@ApplicationPath("/")
public class MyMain extends ResourceConfig {

    private final static Logger logger = LoggerFactory.getLogger(MyMain.class);

    private Map<String,Map<String,String>> myConfig = null;

    public MyMain() {

        final String myEnv = System.getProperty("myEnvironment");

        // doing more stuff, registering resources ...
    }
}
因此,我需要:

  • 将项目与Tomcat服务器分离
  • 当我在服务器上再次运行它时,servlet没有运行,因此我需要使用以下引用将项目绑定回Eclipse中的服务器:
  • 这将更改
    .classpath

    - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-11-oracle">
    + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
    
    我很确定我在某个地方有一个错误的配置,除了Eclipse之外,我还想使用
    mvn
    。但我到底做错了什么


    还需要配置吗?

    最关键的更改是

  • 从项目引用中删除Eclipse服务器
  • 将执行环境设置为
    JavaSE-11
    (参见屏幕截图1)
  • 使用正确的部署程序集(请参见屏幕截图2),以便
    mvn clean package
    让服务器与servlet项目一起运行,因为源代码创建了相同的结果。另见

  • 非常简短的回答。真相就在pom里。M2E从POM创建信息…为什么不遵循约定并通过
    WebContent
    更改默认值呢。。。将内容放入
    src/main/webapp
    …类路径更改为对JavaSE-11的抽象执行环境引用;它更便于携带,而且你无论如何都应该使用它。
    .project
    更改是因为您修改了项目引用,这在这里没有任何用处。您应该转到服务器属性页以实际影响使用Eclipse的“在服务器上运行/调试”功能运行项目的服务器。您的Eclipse是否识别该项目是Maven项目?你是怎么进口的?若确实如此,那个么Eclipse应该读取您的pom.xml以确定许多项目设置。如果不是,这可能是许多问题的原因。我也不确定是否从“属性”菜单将项目与服务器关联起来。我通常只需在Eclipse的服务器视图/选项卡中右键单击服务器,然后单击“添加/删除应用程序”或类似的内容。@admdev该项目从一开始就已更改为maven项目,因此pom.xml反映在Eclipse设置中(project->settings->maven->Update project)。我仍然不知道为什么servlet没有在Tomcat中启动。Tomcat跑得很好。(我使用的是'src/main/webapp'而不是'WebContents'和std Java JavaSE-11执行环境。@不管我是在servlet项目中引用服务器还是反过来引用服务器,Tomcat运行良好,但servlet根本无法识别/启动。
    # server.xml in tmp folder after starting the server (*run on server*)
    <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
        <Context docBase="/home/myname/work/sdp/eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/webapps/ROOT" path="" reloadable="false"/>
        <Context docBase="sdp-api" path="/sdp-api" reloadable="true" source="org.eclipse.jst.jee.server:sdp-api"></Context>
    </Host>
    
    # same part of server.xml in Server folder of server project in Eclipse after having the servlet project configured for (added to) server 
    <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
        <Context docBase="sdp-api" path="/sdp-api" reloadable="true" source="org.eclipse.jst.jee.server:sdp-api"/>
    </Host>
    
    Publishing failed with multiple errors
    File not found: /path/to/my-project/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF.
    File not found: /path/to/my-project/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF.
    File not found: /path/to/my-project/target/m2e-wtp/web-resources/META-INF/maven/mainPackage/my-project/pom.properties.
    File not found: /path/to/my-project/target/m2e-wtp/web-resources/META-INF/maven/mainPackage/my-project/pom.properties.
    File not found: /path/to/my-project/target/m2e-wtp/web-resources/META-INF/maven/mainPackage/my-project/pom.xml.
    File not found: /path/to/my-project/target/m2e-wtp/web-resources/META-INF/maven/mainPackage/my-project/pom.xml.
    
    - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-11-oracle">
    + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
    
    - <attribute name="owner.project.facets" value="java"/>
    + <attribute name="maven.pomderived" value="true"/>*
    
      <projects>
    +    <project>Servers</project>
      </projects>