- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个项目需要将 ${}
占位符替换应用于 web.xml
,我想使用 mvn tomcat6 运行开发模式:运行
。可以这样设置吗?
这是一个遗留代码库,我试图在其中引入这两种部署环境,以摆脱之前的过程,即“复制 web.xml 变体并编辑配置文件,并将其置于源代码控制之外”。我还想避免必须维护 Tomcat 安装和设置 IDE 以部署到它,而只需使用 tomcat6-maven-plugin
执行应用程序。
到目前为止,我所拥有的是这个项目布局:
foo
│ pom.xml
│
└───src
└───main
├───environments
│ ├───BAR
│ │ filter.properties
│ │
│ └───FOO
│ filter.properties
│
├───java
│ └───se
│ └───millimoo
│ IndexServlet.java
│
└───webapp
└───WEB-INF
web.xml
pom.xml
...
<build>
<filters>
<filter>src/main/environments/${environment}/filter.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/environments/${environment}</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>env-foo</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<environment>FOO</environment>
</properties>
</profile>
<profile>
<id>env-bar</id>
<properties>
<environment>BAR</environment>
</properties>
</profile>
</profiles>
...
即:我将环境的目录添加为资源;告诉 Maven 从该目录中的 filter.properties
加载占位符值;并告诉 WAR 插件过滤部署描述符。我还设置了两个配置文件以在环境之间切换。
FOO\filter.properties
filter.environment=foofoo
BAR\filter.properties
filter.environment=barbar
web.xml
...
<servlet>
<servlet-name>Index</servlet-name>
<servlet-class>se.millimoo.IndexServlet</servlet-class>
<init-param>
<param-name>environment</param-name>
<param-value>${filter.environment}</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Index</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
...
IndexServlet.java
打印 environment
初始化参数的值。
发生的事情是,当我使用 mvn tomcat6:run
运行它时,它使用未过滤的 web.xml
,这显然不是我想要的。当我使用 mvn tomcat6:run-war
时使用过滤版本,但我不喜欢它:它更慢,并且在我的实际代码中有其他问题通常会减慢周转速度,这是练习的重点。 (它使用依赖项目的 JAR 文件,其中后端代码来自 Maven 存储库来构建 JAR,如果我在版本号增加后没有安装它们,它可能已经过时或根本不可用;而不是使用当前代码。)
有什么办法可以两全其美吗?能够通过 Maven 或其他易于嵌入的方式运行应用程序服务器,同时还对 web.xml 应用过滤?最好不要显着改变应用程序本身,即我不想在不使用 servlet init 参数的情况下加载配置值。 (在实际代码中,servlet 是第三方的。)
最佳答案
我认为你需要在你的 pom.xml
中添加这个,这样 Maven 就知道他也需要过滤这个目录:
<build>
<resources>
<resource>
<directory>src/main/webapp/WEB-INF</directory>
<filtering>true</filtering>
</resource>
</resources>
...
</build>
正如评论中所讨论的,这种方法可能不是一个好的解决方案。
另一种解决方案:
Overriding the default destination directory
By default web resources are copied to the root of the WAR, as shown in the previous example. To override the default destination directory, specify the target path.
...
<configuration>
<webResources>
<resource>
...
</resource>
<resource>
<directory>configurations</directory>
<!-- override the destination directory for this resource -->
<targetPath>WEB-INF</targetPath>
<!-- enable filtering -->
<filtering>true</filtering>
<excludes>
<exclude>**/properties</exclude>
</excludes>
</resource>
</webResources>
</configuration>
...
在此示例中,我们覆盖了一个目录,但也许可以覆盖单个文件。
关于java - 是否有可能让 `mvn tomcat6:run` 与过滤后的 web.xml 一起正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47310760/
自从我 faced an issue由于背景图片对于不同分辨率的内容来说太短,我尝试将背景分成 3 部分并自动拉伸(stretch)中间部分以相应地填充顶部和底部图像之间的空间。不幸的是我没能在 CS
我从去年开始就在我的程序中运行这个函数(Linux 和 Windows)。 现在我需要实现一个新功能,我的新构建不再运行。 我还有其他使用 POST 的 CUrl 函数,结果是一样的:没问题,但我的
在评估函数应用方面,Haskell 是只支持普通降阶还是也支持应用降阶?我是否认为正常顺序是 Haskell 惰性的原因? 最佳答案 GHC 运行时不使用术语缩减策略,因为那会非常低效。事实上,GHC
怎么来的multi使用多处理池对多个“进程”上的数据进行分段和处理的函数比仅调用 map 慢(8 秒)。功能(6 秒)? from multiprocessing import Pool import
假设我正在渲染一个 3d GL_TRIANGLE。该对象需要 3 个顶点才能定义:A、B、C。我将此类数据放入缓冲区并通过 glVertexAttribPointer 将其绑定(bind)到着色器。
我有一个字体的三个文件,普通的,粗体的和浅色的。由于 font-weight:light 不存在,我该如何在 font-face 上设置 light 呢? 顺便问一下,font-weight:ligh
我是 C 的新手,我似乎无法弄清楚什么似乎是一个非常简单的指针问题。我的程序将行号添加到文件中。它逐行读入文件,然后在每行的开头添加一个行号。它在每个文件上都可以正常工作,如下所示: soccer@s
我有以下代码,我不确定为什么当它命中 Myclass 的析构函数时我会收到堆损坏检测错误。我相信我正在正确地释放内存?? #include #include using namespace std
有什么方法可以将“正常”数学符号解释为逆波兰符号 (RPN)..? 例如1) 2 + 3*4 - 1 = 234*+1-2) 5 (4-8) = 548- 你可以假设遵循 BODMAS 规则并且必须首
http://www.ergotopia.de/ergonomie-shop/ergonomische-kissen/orthopaedisches-sitzkissen的手机页面应该看起来像右边(检
我正在 Phonegap/Cordova 中构建一个应用程序。应用目前相当简单,但确实需要网络状态和地理定位插件才能工作。 到目前为止,我已经在 Android 上开发了该应用程序(目前它仅由一些基本
我一整天都在做这个,但没有运气 我设法在一行 TfidfVectorizer 中消除了问题 这是我的工作代码 from sklearn.feature_extraction.text import C
也许有人看到一个错误,问题是当我按btn2 (button 2)和btn3 (button 3)应用程序crashes时,但操作仍然有效,即video正在运行并且PDF打开,而button 1正常工作
我正在开发一个应用程序。它的第一页是登录屏幕。成功登录后,我想将用户带到选项卡式 Activity 。我怎样才能在安卓中做到这一点?谢谢 最佳答案 在 Android 中,启动 Activity 是通
我不确定我在这里做错了什么。 :normal! I### 当我对一个单词执行此命令时,我想要的最终结果是: ### word 但是我得到了这个: ###word 最佳答案 Vim 的 :normal是
我必须将 2 个静态矩阵发送到分配动态矩阵的函数,将矩阵 1 乘以矩阵 2,并返回新矩阵的地址。请注意,COMM 很常见。 我尝试删除 free_matrix 行,它工作正常。 void main()
我在我的一个项目中使用 Gnome libglib 并遇到了一个奇怪的错误。我可以输入 GList 的元素数量看起来仅限于 45 个。在第 45 个元素处,它给出了此错误 40 counter 41
我正在尝试获取“顶级”HWND 的尺寸。即,我想要 Firefox/Windows 资源管理器等的主 HWND 的当前尺寸。窗口。如果窗口最小化, GetWindowRect() 将不起作用。 Get
相同的标题:什么是索引 - 正常 - 全文 - 唯一? 最佳答案 普通索引用于通过仅包含行数据的切片或散列来加速操作。 全文索引向数据库的全文搜索 (FTS) 引擎指示它应该将数据存档在给定字段中,以
我正在使用 EnumParser来自 here它在 VC++ 中编译得很好,但是使用 gcc 我有这样的错误: ./Terminator.o: In function `EnumParser::Enu
我是一名优秀的程序员,十分优秀!