Phing - 导入的构建文件不执行

3

作为一个新手使用phing,当我将一个构建文件导入另一个时,导入的构建文件未被执行。我一定做错了什么(请注意$ phing --buildfile imported.xml运行良好)。

我尝试过:

<?xml version="1.0" encoding="UTF-8"?>
<project name="myproject" default="project" basedir="." description="Set up project">
    <target name="project">
        <echo msg="Deploy" />
    </target>
    <import file="import.xml"/>
</project>

AND

<?xml version="1.0" encoding="UTF-8"?>
<project name="myproject" default="project" basedir="." description="Set up project">
    <target name="project">
        <echo msg="Deploy" />
        <import file="import.xml"/>
    </target>
</project>

我在导入文件方面遇到了很多问题。我将构建过程按组件拆分,以避免一个非常大的构建文件,但是当我执行phing -l时,我会出现重复的条目。 - corretge
如果您在执行一个独特的导入任务时遇到问题,请尝试不使用前缀来执行它。 - corretge
2个回答

1

没关系,我发现你需要在默认目标中添加一个 <make> 标签。

现在是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<project name="myproject" default="project" basedir="." description="Set up project">
    <target name="project">
        <echo msg="Deploy" />
        <phingcall target="importedTarget" />
    </target>
    <import file="import.xml"/>
</project>

1
我认为问题出在“命名空间”上。我给你解释一下我的情况,也许也是你的情况。 我有一个build.xml文件,导入了这个结构:
.
├── bin
│   ├── phing
│   │   ├── qgpl
│   │   │   ├── console.xml
│   │   │   └── folder.xml
│   │   └── skel.xml

将这些任务导入到build.xml底部。
<import file="${tasks.dir}/phing/skel.xml" optional="false" />

<import file="${tasks.dir}/phing/qgpl/console.xml" optional="false" />
<import file="${tasks.dir}/phing/qgpl/folder.xml" optional="false" />

如果文件bin/phing/qgpl/console.xml被定义为:
<project name="qgpl.console" basedir="${build.dir}" >

我得到了重复的目标:

phing -l

Buildfile: build.xml
 [property] Loading etc/config.ini
 [property] Loading etc/local-config.ini
 [property] Loading etc/after-local-config.ini

Default target:
-------------------------------------------------------------------------------
 build                      Build the application

Main targets:
-------------------------------------------------------------------------------
 base64Encode               Convertim a Base64 una cadena preguntada

 [...]

 qgpl_console.base64Encode  Convertim a Base64 una cadena preguntada

但是如果项目中只有一个base64Encode目标,我必须使用以下命令来执行它

phing base64Encode

因为。
phing qgpl_console.base64Encode

什么也没做,没有错误,但也没有执行任何操作。

我通过删除导入文件中的项目名称关键字来修复它。

<project basedir="${build.dir}" >

在每个目标中添加“命名空间”。
<target name="qgpl.console.base64Encode" description="Convertim a Base64 una cadena preguntada" >

    <input propertyname="stringPlain">Input string to convert to Base64</input>
    <qgpl.base64Encode string="${stringPlain}" returnProperty="string64" />
    <echo>${string64}</echo>
</target>

我在文档中搜索,但是没有找到其他的方法来做到这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接