【问题标题】:How to copy jar files to WEB-INF/lib using Grunt如何使用 Grunt 将 jar 文件复制到 WEB-INF/lib
【发布时间】:2018-10-22 16:54:17
【问题描述】:

我是 Grunt 构建的新手。这里我的要求是,在使用 Grunt build 执行战争任务时,创建 WEB-INF/lib 目录并将 Jar 文件复制到其中。

以下是我的 war.js 示例:

module.exports = {
/*
 * Build a WAR (web archive) without Maven or the JVM installed.
 */

target: {
    options: {
        war_dist_folder: 'deploy',
        /* Folder to generate the WAR into */
        war_name: 'mySampleApp',
        /* The name fo the WAR file (.war will be the extension) */
        webxml_webapp_version: '2.5',
        war_extras: [{
                filename: 'WEB-INF/weblogic.xml',
                data: '<?xml version = "1.0" encoding = "US-ASCII"?> \n\n\
                        <weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \n\n\
                        xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" \n\n\
                        xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app"> \n\n\
                            <context-root>my-sample-app</context-root> \n\n\
                            <session-descriptor> \n\n\
                              <timeout-secs>1800</timeout-secs> \n\n\
                               <cookie-name>JSESSIONID</cookie-name> \n\n\
                                <cookie-path>/my-sample-app</cookie-path>  \n\n\
                                <url-rewriting-enabled>false</url-rewriting-enabled>  \n\n\
                            </session-descriptor> \n\n\
                        </weblogic-web-app>'
            }],
        /* the war_extras are extra files to be generated, needed since grunt-war doesn't create a weblogic.xml */
        webxml_welcome: 'index.html',
        /* to point web.xml to the default page */
        webxml_webapp_extras: ['<login-config />\n', 
                               '<session-config>\n    \n\
                                    <session-timeout>\n    30\n    </session-timeout>\n\n\
                                </session-config>\n',
                                '<servlet>\n   \n\
                                    <servlet-name>\n    MyServlet\n    </servlet-name>\n\n\
                                    <servlet-class>com.sample.servlet.MyServlet</servlet-class>\n\n\
                                </servlet>\n',
                                '<servlet-mapping>\n\
                                    <servlet-name>MyServlet</servlet-name>\n\
                                    <url-pattern>/maySampleApp</url-pattern>    \n\
                                </servlet-mapping>'
                              ]

    },
    files: [{
            expand: true,
            cwd: 'release',
            /* find the source files for the WAR in the /release folder */
            src: ['**'],
            dest: ''
        }]
    }
};

请向我提供创建 WEB-INF/lib 目录并将 jar 文件复制到其中的说明。

【问题讨论】:

  • 如果您编辑您的问题以提供更多详细信息,您可能会增加获得答案/解决方案的机会,例如:1. 显示您的源目录结构,2. 指明.jar 文件的位置,即您要复制的文件。 3. 指明您希望复制的.jar 文件在生成的mySampleApp.war 文件的WEB-INF/lib 目录中的结构。
  • 此外,您的目的还不清楚。 Grunt 是一种“前端构建工具(javascript)”部分。 WEB-INF/lib,通常是“项目构建工具(maven/gradle/ant/ivy)”生命周期的一部分。除非您想用 grunt 完全替换“通用 java 构建工具”,否则我认为至少您真正想要使用的是 maven-frontend-plugin 之类的东西:github.com/eirslett/frontend-maven-plugin

标签: java gruntjs


【解决方案1】:

您是否尝试过一些“简单”的方法(files 采用“数组”参数...这个特定的选项字段没有真正记录在案at grunt-war):

// ...,
files: [{
        expand: true,
        // better ...no cwd, "copy single file tree" @see [2]
        src: ['release/*'],
        dest: ''
    }, // a second "files" object! (and my particular answer)
    {
        // expand: false, assuming/hoping for a flat *.jar structure (all in one folder)
        // cwd: '', NO cwd ...
        /* GET all files with "lib/*.jar" "matcher" */
        src: ['lib/*.jar'],
        /* ... and "destinate" into "WEB-INF/lib" */
        dest: 'WEB-INF/lib'
    }
] // ...

?

没有保修,没有测试,只是一个内测! :)

当您的“lib”文件夹结构过于花哨时,您必须使用epxandcwd,请参阅: [1][2]、@RobC 的评论。

当所有这一切都因grunt-war plugin 而失败时,我会尝试将copy(罐子)放入“release/WEB-INF/lib”,之前war 是执行。

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 2011-04-30
    • 2018-02-24
    • 1970-01-01
    • 2011-02-20
    相关资源
    最近更新 更多