Jsp 使用Maven配置文件在缩小/未压缩的JS之间切换?

Jsp 使用Maven配置文件在缩小/未压缩的JS之间切换?,jsp,maven,minify,maven-profiles,Jsp,Maven,Minify,Maven Profiles,我正在开发一个Java web应用程序,它使用Maven进行构建过程,并且有很多JavaScript 我想做的基本上是在我的JSP文件中包含以下内容: <c:choose> <c:when test="PRODUCTION"> <script type="text/javascript" src="/path/to/app.min.js"></script> </c:when> <c:oth

我正在开发一个Java web应用程序,它使用Maven进行构建过程,并且有很多JavaScript

我想做的基本上是在我的JSP文件中包含以下内容:

<c:choose>
    <c:when test="PRODUCTION">
        <script type="text/javascript" src="/path/to/app.min.js"></script>
    </c:when>
    <c:otherwise>
        <script type="text/javascript" src="/path/to/script1.js"></script>
        <script type="text/javascript" src="/path/to/script2.js"></script>
    </c:otherwise
</c:choose>

看一看。您可以使用它以实际值覆盖资源文件中的属性

1) 使用包含环境名称的属性文件。说出包含以下内容的environment.properties

environment.name=${environment.name}
现在在pom文件中使用下面的

<properties>
    <environment.name>TEST</environment.name>
</properties>

<profiles>
    <profile>
        <id>PROD</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <properties>
            <environment.name>PROD</environment.name>
        </properties>
    </profile>
</profiles>
environment.properties将被处理为

environment.name=PROD
environment.name=TEST
如果您不使用此配置文件

mvn clean install
它将被处理为

environment.name=PROD
environment.name=TEST
现在在运行时,从environment.properties读取environment.name属性,并根据属性值使用相应的.js文件

2) 如果您不想读取属性文件,可以过滤jsp本身

<properties>
    <js.suffix></js.suffix>
</properties>

<profiles>
    <profile>
        <id>PROD</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <properties>
            <js.suffix>min.</js.suffix>
        </properties>
    </profile>
</profiles>

戳
假的
敏。
并设置web资源过滤

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <webResources>
                    <resource>
                        <directory>src/main/webapp</directory>
                        <filtering>true</filtering>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
    </plugins>
</build>

org.apache.maven.plugins
maven战争插件
2.5
src/main/webapp
真的
并在jsp中添加此类内容

 <script type="text/javascript" src="/path/to/app.${js.suffix}js"></script>


(假设未压缩的是app.js,压缩的是app.min.js)

我的解决方案有点不同。我使用minify maven插件,在开发过程中,我使用它创建一个合并的,但不是缩小的app.js,在生产过程中,我使用它创建一个缩小的文件。我将它们都命名为app.js,这样我就不必用Maven更改我的JSP文件

例如:


com.samaxes.maven
缩小maven插件
1.7.2
缩小js
生成源
utf-8
假的
${javascript.skipnify}
真的
${project.basedir}/src/main/webapp
资产/js
*.js
app.js
缩小
然后我使用Maven配置文件切换
${javascript.skipMinify}
属性,例如:


发展
真的
真的
生产
假的