3

[问题更新:见下文]

我有一个引用另一个 Maven 项目(门户框架)的 Maven 网络项目(门户网站)。Web 服务器是 Wilfly 10.0.0,IDE 是 Eclipse MARS,带有用于连接器的 Jboss 工具。

框架项目在 src\main\resourcesMETA-INF\taglib.tld 上包含一个 TLD 文件。我在我的 JSP 上使用的:

<%@taglib uri="http://fhc.pt/tags/fmc" prefix="fmc"%>

<fmc:lookup attr1="this" attr2="that"></fmc:lookup>

问题是,在我的 JSP 上使用标记库会导致访问被拒绝错误:

Stack Trace
org.apache.jasper.JasperException: java.io.FileNotFoundException: C:\Program Files\Java\wildfly-10.0.0.Final\standalone\deployments\portal.web.war\WEB-INF\lib\portal.framework-0.0.1-SNAPSHOT.jar (Access Denied)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:151)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:412)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:475)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1456)
org.apache.jasper.compiler.Parser.parse(Parser.java:143)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:223)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:200)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)

现在,在将主项目部署到 wildlfy 时,依赖的 JAR 会在以下位置展开:

wildfly-10.0.0.Final\standalone\deployments\portal.web.war\WEB-INF\lib\portal.framework-0.0.1-SNAPSHOT.jar <- **This is a folder.**

我注意到 JAR 项目似乎在 eclipse、connector 和 wildfly 之间的处理方式不同,如下所示:

部署结构

我的项目中有大量依赖包(Spring、hibernate 等),但只有这两个显示为“J2EE 实用程序 JAR”。这与部署时爆炸的 JAR 有关吗?

我还尝试在 wildfly 连接器上启用“部署为压缩存档”选项,但它并没有真正起作用(部署后 spring 根本没有启动)。

在搜索了这个问题之后,我对可能导致此问题的原因感到非常困惑:它是日食吗?M2E?POM 的?野蝇?Eclipse 方面?我尝试了这些晦涩的部署选项属性的多种组合,尝试删除“实用程序方面”,甚至运行 maven eclipse:eclipse 但老实说,我完全迷失了,因为我不知道在哪里搜索问题。

我该如何排序?

这是我的POM。简化:

“父 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>pt.fhc.fmc</groupId>
    <artifactId>core-dependencies</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <dependencies>
        <!-- Usual dependencies for Spring, Logging, Mysql, etc... -->
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

门户框架 POM (JAR)

<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>
    <artifactId>portal.framework</artifactId>
    <name>FMC Framework</name>
    <parent>
        <groupId>pt.fhc.fmc</groupId>
        <artifactId>core-dependencies</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>..\fmc-dependencies\pom.xml</relativePath>
    </parent>
</project>

Portal-WEB POM (The WAR) 注意:这个项目对不同的模块使用 maven 覆盖,但是因为模块被正确地添加到最终的 WAR 中,所以效果很好。只是 JAR 会爆炸

<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>
    <artifactId>portal.web</artifactId>
    <packaging>war</packaging>
    <name>web Module</name>

    <parent>
        <groupId>pt.fhc.fmc</groupId>
        <artifactId>core-dependencies</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>..\fmc-dependencies\pom.xml</relativePath>
    </parent>

    <dependencies>
        <dependency>
            <groupId>pt.fhc.fmc</groupId>
            <artifactId>portal.framework</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <!-- Modules -->
        <dependency>
            <groupId>pt.fhc.fms.modules</groupId>
            <artifactId>module-a</artifactId>
            <type>war</type>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>pt.fhc.fms.modules</groupId>
            <artifactId>module-b</artifactId>
            <type>war</type>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>pt.fhc.fms.modules</groupId>
            <artifactId>module-c</artifactId>
            <type>war</type>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>

                <configuration>
                    <overlays>
                        <overlay>
                            <groupId>pt.fhc.fms.modules</groupId>
                            <artifactId>module-a</artifactId>
                        </overlay>

                        <overlay>
                            <groupId>pt.fhc.fms.modules</groupId>
                            <artifactId>module-b</artifactId>
                        </overlay>

                        <overlay>
                            <groupId>pt.fhc.fms.modules</groupId>
                            <artifactId>module-c</artifactId>
                        </overlay>
                    </overlays>
                </configuration>

            </plugin>

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

更新:我注意到使用 wildfly maven 插件并运行 mvn wildfly:deploy 一切正常(实用程序 JAR 被部署为存档),所以问题一定出在 eclipse 中,它正在爆炸实用程序 JAR。

4

0 回答 0