Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat7 maven插件-与maven资源插件一起使用时重新加载资源_Java_Maven_Maven Tomcat Plugin - Fatal编程技术网

Java Tomcat7 maven插件-与maven资源插件一起使用时重新加载资源

Java Tomcat7 maven插件-与maven资源插件一起使用时重新加载资源,java,maven,maven-tomcat-plugin,Java,Maven,Maven Tomcat Plugin,默认情况下,带有tomcat7:run的Maven Tomcat插件从src/main/webapp读取资源 但是,当您拥有来自Maven资源插件的自定义资源时,需要将其配置为包含这些资源。是将warSourceDirectory配置为指向target/${project.build.finalName},它是由Maven WAR插件在包阶段创建的。这是可行的,但是现在我在src/main/webapp中更改的文件在运行mvn包之前不会在Tomcat实例中更改。IDE通常进行mvn编译,以便将资

默认情况下,带有tomcat7:run的Maven Tomcat插件从src/main/webapp读取资源

但是,当您拥有来自Maven资源插件的自定义资源时,需要将其配置为包含这些资源。是将warSourceDirectory配置为指向target/${project.build.finalName},它是由Maven WAR插件在包阶段创建的。这是可行的,但是现在我在src/main/webapp中更改的文件在运行mvn包之前不会在Tomcat实例中更改。IDE通常进行mvn编译,以便将资源复制到目标/类。我试着把它指向target/classes,但它需要一个WEB-INF/文件夹。我还尝试使用AdditionalClassPathDir指向target/classes和src/main/webapp

插件版本是2.2


如何在Maven Tomcat插件中包含资源,同时仍然能够动态地重新加载资源?

我的建议是使用spring配置文件,以便为每个环境加载正确的bean,并从外部文件加载属性file://opt/myapp/application.properties 其中application.properties将根据环境。

你在说什么样的资源?在src/main/webapp中有js、css、html、jsp文件,因此如果您在src/main/myresources中有另一个文件夹,那么您就有两个用于js css html等的资源文件夹。请指定要重新加载的资源类型?属性文件和Spring配置文件。Maven resources插件根据配置文件将src/main/config/dev/或src/main/config/production/复制到目标。我想在src/main/webapp中重新加载js/html文件。如果插件有办法用这些文件覆盖目标资源,这将解决问题。我知道这是可能的,但它经常失败——即使在使用像jrebel这样的动态类加载器时也是如此。出于同样的原因,其他属性文件也可能有问题。但是,如果您只想更改html、css和js文件,那么这是完全可能的。如果你能澄清你的需求,那么我可能会提供帮助。你描述的配置,有一个dev和prod文件夹,不是很好的做法。您的目标应该是创建一个二进制文件,并让它从外部配置文件或环境变量中发现其环境。@EngineerDollery我不明白为什么对于一个只有一个开发和生产配置的小项目来说,这是一个不好的做法,因为这是唯一会导致问题的情况。我认为它是Maven Tomcat插件的一个缺陷,如果它不能被配置成在打包资源文件的状态下运行,同时重新加载资源。不过,我同意,在这种情况下,这是解决问题的有效方法,如果没有更好的解决方案,我将接受Eddu的回答。这正是我已经做过的。默认情况下,Tomcat插件根本不使用目标/文件夹。您应该将所有属性保留在一个路径中。如果在dev环境中部署,则属性将具有不同于本地的另一个值,并且对于生产环境也是相同的。