为什么在WTP插件部署一个Maven的依赖作为一个文件夹,而不是一个罐子?(Why does the

2019-07-30 07:24发布

我有与Maven和Eclipse WTP一个很奇怪的问题。 我有一个多模块项目,让我们称之为project 。 它由两个模块project-baseproject-web 。 我启用了工作空间分辨率(和它正常工作与其他几个非常相似的Maven项目)。

project-base是依赖project-web ,它的正常部署为jar文件。 但几天来,一直被部署为一类文件夹中我本地的Tomcat,你可以在这里看到:

因此,我的Tomcat不承认我的任何类文件在那里,因为它希望他们是罐子,不是文件夹。 该-tests后缀来源于需要有从基本的测试在我的web项目。 我不认为这是问题。

project-web具有从工作区得到解决3个依赖性。 其中两个被正确部署,如罐子,但第三个是没有的。

project-base的的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>
    <parent>
        <artifactId>project</artifactId>
        <groupId>com.company.project</groupId>
        <version>4.0.0</version>
    </parent>
    <artifactId>project-base</artifactId>
    <name>projectBase</name>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>windows-1251</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>jar</goal>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.0</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.4</version>
            </plugin>
        </plugins>
    </build>
</project>

依赖project-base ,因为它是定义project-web看起来是这样的:

<dependency>
    <groupId>com.company.project</groupId>
    <artifactId>project-base</artifactId>
    <version>${project.version}</version>
</dependency>

<dependency>
    <groupId>com.company.project</groupId>
    <artifactId>project-base</artifactId>
    <version>${project.version}</version>
    <type>test-jar</type>
    <scope>test</scope>
</dependency>

我没有,为什么一个依赖部署在这样一种奇怪的方式的想法,我不知道如何解决这个问题。 我清理项目,tomcat的,重新部署web工程,净化了我的整个Maven仓库,检查了整个项目的VCS新鲜,没有任何帮助。

什么会引起的Eclipse WTP部署这种依赖作为一个文件夹,而不是一个jar文件?

Answer 1:

我通过删除“部署集结号”项目设置页面的依赖,并把它加回到解决了这个问题。



Answer 2:

我只是有同样的问题。 M2E升级到1.2版固定它。



Answer 3:

如果该文件夹的分解JAR(所以它就像一个JAR文件,但显示为一个文件夹,不存档),于我而言,这是一个服务器的连接问题。

虽然我使用JBoss而不是Tomcat的,这可能是别人这个问题苦苦挣扎有所帮助。

只要你有安装在您的Eclipse的最新JBoss的工具,可以在服务器视图中双击服务器打开的设置。

部署选项卡,您可以选择邮编模块是/否为每个项目。 当我选择的是我的实用JAR文件时,JBoss则部署的依赖作为一个正常的JAR文件的文件夹,而不是。



Answer 4:

我最终解决我的问题:我曾与属性部分部署大会对问题的project-base项目。 我也救不了它,因为Eclipse中提到,当前页面不包含错误。

然后我看着设置文件.settings/org.eclipse.wst.common.component 。 这完全是空的(我不知道为什么)。 然后添加以下块:

<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
    <wb-module deploy-name="project-base">
        <wb-resource deploy-path="/" source-path="/src/main/java"/>
        <wb-resource deploy-path="/" source-path="/src/main/resources"/>
    </wb-module>
</project-modules>

在此之后,该设置页面再次访问和JAR是否正确组装。 工作区的分辨率不工作了。



文章来源: Why does the WTP plugin deploy one Maven dependency as a folder, instead of a jar?