gpt4 book ai didi

java - Maven-Tomcat-Plugin 在清理后使用 FileNotFound 配置的 web.xml 错误

转载 作者:行者123 更新时间:2023-11-28 23:08:56 25 4
gpt4 key购买 nike

当尝试在清理后立即执行 mvn tomcat:run 并在 pom 中指定配置的 tomcatWebXml 时,我得到一个 FileNotFoundException。

这是我的 POM 中的片段:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.0-beta-1</version>
<configuration>
<path>/licensing</path>
<tomcatWebXml>${basedir}/src/main/mock/web.xml</tomcatWebXml>
</configuration>
</plugin>

这是我遇到的错误,但仅在清理后的第一次调用时,后续调用会找到文件并正常工作。

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Could not create Tomcat configuration

Embedded error: C:\..snip..\src\main\mock\web.xml
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: Could not create Tomcat
configuration
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:703)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandalone
Goal(DefaultLifecycleExecutor.java:553)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
ltLifecycleExecutor.java:523)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
dleFailures(DefaultLifecycleExecutor.java:371)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
ts(DefaultLifecycleExecutor.java:332)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
fecycleExecutor.java:181)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:4
1)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)

at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoExecutionException: Could not create Tomc
at configuration
at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java
:153)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
nManager.java:483)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:678)
... 17 more
**Caused by: java.io.FileNotFoundException: C:\...snip..\src\main\mock\web.xml**
at org.codehaus.mojo.tomcat.AbstractRunMojo.copyFile(AbstractRunMojo.jav
a:326)
at org.codehaus.mojo.tomcat.AbstractRunMojo.initConfiguration(AbstractRu
nMojo.java:273)
at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java
:143)
... 19 more

关于如何解决这个问题的任何想法?如果它是一个无条件的错误,它似乎是那种会影响任何人和每个人的事情。

最佳答案

我可以重现这个错误。不知道为什么,但在 AbstractRunMojo.java 的以下方法中:

private void copyFile( String fromPath, File toFile )
throws IOException
{

URL fromURL = getClass().getResource( fromPath );

if ( fromURL == null )
{
throw new FileNotFoundException( fromPath );
}

FileUtils.copyURLToFile( fromURL, toFile );
}

getClass().getResource( fromPath ) 的调用确实会在清理后立即返回一个 null URL,并在后续调用期间起作用。我并没有真正挖掘这个问题,但这似乎是一个类加载问题(可能与 MTOMCAT-25 有关)。

这很烦人,但解决方法显然是在第一次失败后再次运行目标。

编辑: 我已经报告了这个问题,请参阅 MTOMCAT-42 ,已修复并发布了 Maven Tomcat 插件的新快照!要使用它,请将以下代码片段添加到您的 pom.xml:

  <pluginRepositories>
<pluginRepository>
<id>Codehaus Snapshots</id>
<url>http://snapshots.repository.codehaus.org/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled> <!-- Workaround for MNG-2974, see note below -->
</releases>
</pluginRepository>
</pluginRepositories>

然后把插件的版本改成1.0-SNAPSHOT再试。

关于java - Maven-Tomcat-Plugin 在清理后使用 FileNotFound 配置的 web.xml 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1928724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com