自动化 Eclipse“Yui 压缩机...”

2023-12-04

日食光动力治疗有这个方便的内置功能唯压缩机在文件的上下文菜单中。但是,当构建使用多个此类文件的 Web 应用程序时,每次更新后手动压缩文件会变得很乏味。它甚至不记得哪些文件压缩为哪些文件名,因此您必须再次输入。

是否可以在 Eclipse 中轻松地自动执行此过程,以便您可以单击“构建”或其他内容,然后所有指定的文件将被压缩到其目标?

Eclipse 中有关 Yui 功能的文档确实存在真空。

我正在使用 Eclipse Indigo 3.7.0 和 PDT 3.0.0.v20110516-11,但自 Galileo 以来,PDT 和 Yui 选项仍然非常相似

-update-

自动化解决方案,不是 Eclipse 原生的,但很接近:

  • GNU make 生成文件

    %-min.js: %.js
        ${java} -jar ${compressor} $< -o ${<:.js=-min.js}
    
  • Windows 批处理

    FOR %f IN (*.js) DO java -jar yuicompressor.jar %f -o deploy\%f
    
  • Linux shell 脚本

    ls -1 *.js | awk '{printf("java -jar yuicompressor.jar %s -o deploy/%s",$1,$1)}' | /bin/sh
    
  • ANT file

    看这里:http://www.ubik-ingenierie.com/ubikwiki/index.php?title=Minifying_JS/CSS
    如何在此处粘贴 html/xml?

另请参阅this问题。


好吧,我实际上下载了 jar 并创建了一个 ANT 任务来压缩 CSS 和 JS。我在 Tomcat 上工作,因此它包括上传内容、清理工作/目录等任务。希望能帮助到你。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project>
<project name="MyProject" default="subir">

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

    <property name="project.name" value="MyProject" />

    <property name="src.dir" location="src" />
    <property name="web.dir" location="WebContent" />
    <property name="lib.dir" location="WebContent/WEB-INF/lib" />
    <property name="bin.dir" location="WebContent/WEB-INF/classes" />

    <property name="minify.dir" location="minified" />
    <property name="minify.sourcedir" location="${skin.dir}/resources/" />
    <!-- <property name="minify.sourcedir" location="${web.dir}/resources/" /> -->

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

    <property prefix="env" file="build.properties" />

    <path id="project.classpath">
        <pathelement location="${src.dir}" />
        <fileset dir="${lib.dir}">
            <include name="*.jar" />
        </fileset>
    </path>

    <path id="yui.classpath.minifier">
        <fileset dir="${lib.dir}">
            <include name="YUIAnt.jar" />
            <include name="yuicompressor-2.4.2.jar" />
        </fileset>
    </path>

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

    <target name="checkTomcatHome">
        <condition property="local.tomcathome.exists">
            <available file="${env.TOMCAT_PRUEBAS}" type="dir" />
    </condition>
    </target>

    <target name="subir" depends="checkTomcatHome" if="local.tomcathome.exists">

        <echo message="El servidor Tomcat destino existe, buscando archivos para copia en el proyecto y en en OsmoCore/WebContent..." />

        <copy todir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}">
            <fileset dir="${web.dir}">
                <include name="**/*.*" />
            </fileset>
        </copy>

        <!--<echo message="Buscando archivos para copia en ${env.TOMCAT_PRUEBAS}/webapps/${project.name}/WEB-INF/classes..." />
        <copy todir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}/WEB-INF/classes">
            <fileset dir="${bin.dir}">
                <include name="**/*.*" />
            </fileset>
        </copy>-->

    </target>

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

    <target name="WAR">

        <delete file="${project.name}.war"/>
        <delete dir="TMP_WAR"/>
        <mkdir dir="TMP_WAR"/>


        <copy todir="TMP_WAR">
            <fileset dir="${web.dir}">
                <include name="**/*.*" />
            </fileset>
        </copy>

        <copy todir="TMP_WAR/WEB-INF/classes">
            <fileset dir="${bin.dir}">
                <include name="**/*.*" />
            </fileset>
        </copy>

        <delete dir="${project.name}.war"/>

        <zip destfile="${project.name}.war">
            <zipfileset dir="TMP_WAR">
                <include name="**/*.*" />
            </zipfileset>
        </zip>

        <delete dir="TMP_WAR"/>

    </target>

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

    <target name="subirCompleto" depends="checkTomcatHome" if="local.tomcathome.exists">
        <echo message="El servidor Tomcat destino existe, buscando carpetas Work y ${project.name} en Webapps, para eliminar" />
        <delete dir="${env.TOMCAT_PRUEBAS}/work" />
        <delete dir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}" />
        <antcall target="subir" />
    </target>

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

    <target name="borrarWork" depends="checkTomcatHome" if="local.tomcathome.exists">
        <echo message="El servidor Tomcat destino existe, buscando carpeta Work a eliminar..." />
        <delete dir="${env.TOMCAT_PRUEBAS}/work"/>
    </target>

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

    <target name="css.minify">

        <echo message="Creando directorio temporal ${minify.dir} (si no existe aún)..." />
        <mkdir dir="${minify.dir}" />

        <echo message="Borrando versión anterior de la carpeta temporal ${minify.dir}/css-min/..." />
        <delete dir="${minify.dir}/css-min/" />
        <echo message="Creando carpeta temporal ${minify.dir}/css-min/..." />
        <mkdir dir="${minify.dir}/css-min/" />

        <echo message="Copiando estructura de ${web.dir}/resources/styles/ en carpeta temporal..." />
        <copy todir="${minify.dir}/css-min/">
            <fileset dir="${minify.sourcedir}/styles/">
                <include name="**/*.*" />
            </fileset>
        </copy>

        <echo message="Borrando los CSS copiados a la carpeta temporal..." />
        <delete>
            <fileset dir="${minify.dir}/css-min/" >
                <include name="**/*.css"/>
            </fileset>
        </delete>

        <echo message="Comprimiendo!!!..." />
        <apply executable="java" parallel="false" dest="${minify.dir}/css-min/">
            <fileset dir="${minify.sourcedir}/styles/">
                <include name="**/*.css"/>
            </fileset>
            <arg line="-jar"/>
            <arg path="${lib.dir}/yui_compressor/yuicompressor-2.4.7.jar"/>
            <arg line="--line-break 0"/>
            <arg line="--type css"/>
            <arg line="--charset ISO-8859-1"/>
            <arg line="--nomunge"/>
            <!-- <arg line="- -verbose"/> -->
            <srcfile />
            <arg line="-o"/>
            <mapper type="glob" from="*.css" to="*.css"/>
            <targetfile />
        </apply>
    </target>

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

    <target name="js.minify">

        <echo message="Creando directorio temporal ${minify.dir} (si no existe aún)..." />
        <mkdir dir="${minify.dir}" />

        <echo message="Borrando versión anterior de la carpeta temporal ${web.dir}/resources/js-min/..." />
        <delete dir="${minify.dir}/js-min/" />
        <echo message="Creando carpeta temporal ${web.dir}/resources/js-min/..." />
        <mkdir dir="${minify.dir}/js-min/" />

        <echo message="Copiando estructura de ${web.dir}/resources/scripts/ en carpeta temporal..." />
        <copy todir="${minify.dir}/js-min/">
            <fileset dir="${minify.sourcedir}/scripts/">
                <include name="**/*.*" />
            </fileset>
        </copy>

        <echo message="Borrando los JS copiados a la carpeta temporal..." />
        <delete>
            <fileset dir="${minify.dir}/js-min/" >
                <include name="**/*.js"/>
            </fileset>
        </delete>

        <echo message="Comprimiendo!!!..." />
        <apply executable="java" parallel="false" dest="${minify.dir}/js-min/">

            <fileset dir="${minify.sourcedir}/scripts">
                <include name="**/*.js"/>
            </fileset>
            <arg line="-jar"/>
            <arg path="${lib.dir}/yui_compressor/yuicompressor-2.4.7.jar"/>
            <arg line="--line-break 0"/>
            <arg line="--type js"/>
            <arg line="--charset ISO-8859-1"/>
            <arg line="--nomunge"/>
            <!--<arg line="- -verbose"/>-->
            <srcfile />
            <arg line="-o"/>
            <mapper type="glob" from="*.js" to="*.js"/>
            <targetfile />
        </apply>

    </target>

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

    <target name="js.minified.subir" depends="checkTomcatHome" if="local.tomcathome.exists">
        <echo message="El servidor Tomcat destino existe, copiando archivos 'encogidos' a  ${env.TOMCAT_PRUEBAS}/webapps/${project.name}/resources/scripts..." />
        <copy todir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}/resources/scripts" overwrite="yes">
            <fileset dir="${minify.dir}/js-min/">
                <include name="**/*.*" />
            </fileset>
        </copy>
    </target>

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

    <target name="css.minified.subir" depends="checkTomcatHome" if="local.tomcathome.exists">
        <echo message="El servidor Tomcat destino existe, copiando archivos 'encogidos' a  ${env.TOMCAT_PRUEBAS}/webapps/${project.name}/resources/styles..." />
        <copy todir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}/resources/styles" overwrite="yes">
            <fileset dir="${minify.dir}/css-min/">
                <include name="**/*.*" />
            </fileset>
        </copy>
    </target>

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

    <target name="css.minified.process">
        <echo message="Reduciendo el tamaño de los archivos CSS..." />
        <antcall target="css.minify" />

        <echo message="Cargando los archivos CSS..." />
        <antcall target="css.minified.subir" />

        <echo message="Borrando la carpeta temporal..." />
        <delete dir="${minify.dir}" />
    </target>

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

    <target name="js.minified.process">
        <echo message="Reduciendo el tamaño de los archivos JS..." />
        <antcall target="js.minify" />

        <echo message="Cargando los archivos JS..." />
        <antcall target="js.minified.subir" />

        <echo message="Borrando la carpeta temporal..." />
        <delete dir="${minify.dir}" />
    </target>
    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

</project>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动化 Eclipse“Yui 压缩机...” 的相关文章

  • moment.calendar() 没有时间

    我想使用不带时间的 moment calendar 选项 所以而不是 上周二下午 5 点 我想要 上周二 有人知道 Moment 现在是否有解决方案吗 我找到了这个小提琴http jsfiddle net nawxZ http jsfidd
  • jqgrid 在编辑框中选择不正确的下拉选项值

    我正在使用表单编辑 表单中有两个选择框 一个选择框是国家 地区 另一个选择框是州 州选择框取决于所选的国家 地区 并将动态填充 例如 Country 美国 期权价值 1 英国 期权价值 2 美国的状态 阿拉巴马州 选项值 1 加利福尼亚州
  • ExitFullScreen 不起作用 + 无论如何要按键盘单击按钮?

    我的浏览器 Google Chrome 版本 33 0 1750 154 m Script function exitFullscreen var element document documentElement if element mo
  • Angular - Safari 无法正确显示 DOM

    我是 Angular 的新手 使用 Angular 4 我尝试通过在关联的组件类文件中设置属性来更新特定元素 但是 除非我尝试强制重新绘制网页 通过调整窗口大小等 否则页面不会更新 我打开检查器 看到 DOM 已更改 但显示与元素检查器中的
  • 使用 jQuery 的 javascript 关联数组长度

    我正在使用 javascript 关联数组 例如 var testarray testarray one 1 testarray two 2 testarray three 3 我也在旁边使用jquery 如何使用 jquery 或任何其他
  • 无法读取setInterval(Hooks)中的最新状态变量[重复]

    这个问题在这里已经有答案了 我想这是因为 JS 的工作原理 但我想你不会在类中遇到这个问题 在此代码中 let open setOpen React useState false let counter setCounter React u
  • 如何使用 jQuery UI Sortable 正确相交?

    这是我对 jQuery UI Sortable 进行动画处理的尝试 https codepen io anon pen YdMOXE https codepen io anon pen YdMOXE var startIndex chang
  • 测量填写部分的时间 - 谷歌表单

    我正在尝试使用谷歌表单进行研究调查问卷 对于某些部分 我想自动测量用户填写所需的时间 谷歌表单中没有这样的选项 我尝试复制表单源 并用 javascript 填充时间 但它不起作用 跨源问题 未能成功托管复制的表单 如何做到 我如何衡量回答
  • 将数字限制为段的最优雅的方法是什么?

    比方说x a and b是数字 我需要限制x到段的边界 a b 换句话说 我需要一个钳位功能 https math stackexchange com q 1336636 clamp x max a min x b 有人能想出一个更易读的版
  • 如何按值删除数组中的多个项目?

    我正在尝试做一个removeAll 函数 它将删除具有该特定值 而不是索引 的数组的所有元素 当我们对循环进行任何更改时 棘手的部分就出现了 索引往往会移动 使其很难像我们想要的那样工作 并且每次更改时都重新启动循环 这在大数组上效率非常低
  • 是否可以让 webpacks System.import 使用 ajax (用于进度事件)?

    所以我刚刚更新到 webpack 2 并进行了第一个工作设置 其中 webpack 通过查看 System import 调用自动创建块 相当甜蜜 但是 我使用 ajax 调用加载初始块 以便我可以加载时显示进度 https stackov
  • 替换打字稿中字符串中字符的所有实例?

    我正在尝试用 x 字符替换电子邮件中的所有句号 例如 电子邮件受保护 cdn cgi l email protection 将变为 myxemail emailxcom 电子邮件设置为字符串 我的问题是它不只是替换句号 而是替换每个字符 所
  • 在部分渲染时执行 JavaScript

    我有一些 JavaScript 代码 我想在用户单击其文件夹之一后执行 它会触发 show 操作和 show js erb 从而呈 现部分内容 Show js erb 当用户单击其文件夹之一时触发 如下所示 body append 它成功注
  • 如何在 JavaScript 中从代理对构造 UTF-16 字符?

    以下计算 Unicode 代码点的 UTF 16 代理对 戴着医用口罩的脸 https emojipedia org face with medical mask 但是如何从代理对构造字符以在字符串中使用呢 const codepoint
  • 如何使用 HTML5 Javascript Canvas 获取三个碰撞形状的交集并删除不碰撞的部分?

    我最近专门针对 KonvaJs 发布了类似的问题here https stackoverflow com questions 64603077 how can i get the intersection of three shapes c
  • 在 Javascript 中创建数组

    我对 javascript 不太熟悉 并且在用 javascript 制作 2d 或者也许我可能需要 3d 数组时遇到了一些麻烦 我目前需要收集 2 条信息 一个 ID 和一个值 因此我创建了以下内容 var myArray var id
  • 是否可以使用 Eclipse 的正则表达式搜索和替换转换为小写?

    我已经尝试过 L 但它似乎不是其语法的一部分 并且它的帮助没有提及任何可用的转换 我知道我可以并且知道如何从命令行执行此操作 但是 是否可以使用 Eclipse 的正则表达式搜索和替换进行大小写转换 您可以分两步完成 首先插入小写字母 那么
  • 右列固定的 Div 表

    我最近接手了一个非营利网站作为一个项目 我正在使用一个现有的网站 所以我必须使用很多已经编程的东西 所以我所要做的就是创建设计 I made a diagram of basically what I can t figure out ho
  • 将 javascript 变量作为参数传递给 @url.Action()

    是否可以将javascript变量作为参数传递给 url Action 因为据我所知可能存在服务器和客户端问题 我的要求是我必须根据过滤器下载文件 并进行ajax调用不适用于下载文件 所以我对 url Action 进行了编码 但无法实现这
  • 如何在 ionic2 中 pop() 之后重新加载 ion-page

    我有2页Page1 and Page2 我用过this nav pop 在Page2中 它将弹出Page2 Page1将启用 但我想刷新Page1 先感谢您 您可以将父页面与导航推送一起传递 这样您就可以将父页面作为 navParamter

随机推荐

  • 为什么强命名程序集不能使用未签名的程序集?

    要对程序集 A 进行签名 您必须确保 A 使用的所有程序集 B C D 均已签名 然后是 B C D 使用的所有程序集 依此类推 我不明白这有什么安全好处 我认为它应该可以防止篡改 但是程序集 A 可以打开任何文件 并且这些文件可以被篡改
  • 如何查看 Word 文件是否受密码保护?

    我正在维护一个归档系统 该系统必须将各种文档格式转换为 tif 我的问题是受密码保护的 Word 文档 如果文档受密码保护 则 Word 会弹出一个响应 要求我输入密码 如果文档受密码保护 只要我可以告诉客户他需要对此采取措施 那就可以了
  • 如何使用 JavaScript 检查对象中是否存在值

    我在 JavaScript 中有一个对象 var obj a test1 b test2 如何检查 test1 是否作为值存在于对象中 您可以将对象的值转换为数组并测试字符串是否存在 它假设对象没有嵌套并且字符串是完全匹配的 var obj
  • 将鼠标悬停在 Firefox 中的输入自动完成功能时 Div 消失

    我编了一个JSFiddle 这是一个登录表单 将鼠标悬停在 登录 菜单上时出现 但是当将鼠标悬停在输入自动完成功能上时 登录表单会消失 我不希望出现这种情况 如何在不禁用输入自动完成的情况下保留登录表单 这只能用 css 来实现吗 div
  • 如何在 C# 中调整 Windows 窗体窗体的大小?

    我正在制作一个 Windows 窗体应用程序 我希望按下按钮后表单高度增加 我该怎么做呢 Use the Height财产 例如 this Height newHeight
  • 任何现有的 IoC 容器都可以动态创建惰性代理类吗?

    我研究不同的 DI 模式 现在我对惰性生命周期实现感兴趣 例如 我想编写一个代理类 将工厂隐藏在服务接口后面 任何现有的 IoC 容器 NET 都可以在运行时动态创建这种代理类吗 interface IService void Foo vo
  • Android 按钮仅在第二次单击时有效

    我正在开发我的第一个 Android 计算器应用程序 我被一个缺陷困住了 我添加了一些按钮 单击这些按钮时 它会将相应的文本放在EditText场地 主要问题描述如下 运行项目时 必须单击按钮两次才能将相应的文本放在EditText第一次领
  • 防止移动默认键盘在聚焦 时显示

    这就是我正在尝试的方式 但输入仍然 启动 iPhone 的键盘 ps 我想这样做是因为我正在使用 datepicker 插件来获取日期 通过添加属性readonly or readonly readonly 到输入字段 您应该阻止任何人在其
  • 如何从 Android 版 Google Places API 获取地点详细信息?

    我想从自动完成地点服务获得的预测中获取地点的详细信息 城市名称 邮政编码等 我的代码如下 Places GeoDataApi getAutocompletePredictions googleApiClient query bounds n
  • git 中的邪恶合并——它们从哪里来?

    I ve read这个问题和答案 但我不清楚是谁创造了 任何父母都不会出现的变化 是 git merge 算法搞砸了吗 或者是因为用户必须手动调整冲突才能构建内容 从而引入父级中不存在的新代码 正确的第一条评论中有解释answer 您可以在
  • 字符串或二进制数据将被截断:TRY_CAST 未捕获错误

    下面的查询 SELECT YEAR TRY CAST m MetaValue AS DATE FROM MetaData m 导致此错误 String or binary data would be truncated 如果我将查询过滤到有
  • 是否可以确定Environment.SpecialFolder.System 驱动器的Win32_DiskDrive SerialNumber?

    我已经绕了一圈了 似乎在谷歌上也找不到答案 正如标题所说 如果我得到 Windows 正在运行的当前驱动器号 我们可以这样说 Path GetPathRoot Environment GetFolderPath Environment Sp
  • sizeof... 是否允许在模板参数中进行专门化?

    我正在尝试使用 GCC 4 7 快照做一些类似的事情 template
  • PHP Pack/unpack - 它可以处理可变长度字符串吗

    我一直试图弄清楚 Pack Unpack 的 PHP 实现是否可以做 Perl 版本能够做的事情 我希望能够用 PHP 实现的示例是 http perldoc perl org perlpacktut html String Lengths
  • 如何在 C# 中的一个循环中重命名多个按钮

    我有一个类似战舰的程序 其中有 10 x 10 网格的按钮 在程序开始时 我希望所有按钮的文本都更改为 这表明没有人射击该坐标 我似乎找不到一种方法来重命名一个循环中的所有按钮 这些按钮都有名称 b00 b01 b02 显示它们的坐标 第一
  • 如何在 Xcode 8.3 中导入私有框架,而不会出现“架构 arm64 的未定义符号”

    我正在尝试使用 CDBatterySaver 打开低功耗模式 只需使用 CDBatterySaver batterySaver setMode 1 我知道没有与以前的 Xcode 相同类型的目录 因此这些方法不起作用 我也尝试过仅导入 h
  • 计算 A[i] 最右或最左且为 max 的段数

    给你一个数组 其中包含N整数 你必须回答K查询 每个查询包含一个整数X这是数组的 从 1 开始的索引 元素的索引 为每个查询计算以下内容 The number of segments containing the index X as th
  • 使用 SIFT 实现增强现实

    我遇到过很多 AR 库 SDK API 它们都是基于标记的 直到我发现这个视频 从描述和评论来看 他似乎正在使用 SIFT 来检测对象并跟踪它 我需要为 Android 执行此操作 因此我需要用纯 Java 完整实现 SIFT 我愿意这样做
  • 行图在 dc.js/crossfilter 中仅选择一个条形图?

    我有一个 dc rowchart 它有 5 个不同的 类别 最初 所有内容都被选中 当我单击其中一个时 只有该一个会突出显示 当我单击第二个时 我单击的第一个和第二个都会突出显示 如何制作 配置行图 以便每次单击栏时仅突出显示一个类别 dc
  • 自动化 Eclipse“Yui 压缩机...”

    日食光动力治疗有这个方便的内置功能唯压缩机在文件的上下文菜单中 但是 当构建使用多个此类文件的 Web 应用程序时 每次更新后手动压缩文件会变得很乏味 它甚至不记得哪些文件压缩为哪些文件名 因此您必须再次输入 是否可以在 Eclipse 中