exec-maven-plugin 无法正确使用参数

exec-maven-plugin cannot correctly use arguments

我尝试执行带有一些参数的 shell 脚本(实际上它是 OpenLDAP 的 ldapmodify)。这就是我在 pom.xml:

中所做的

在 Maven 配置文件中我定义了一些值

<profile>
    <id>Linux-OpenLDAP</id>
         <activation>
             <os>
                  <family>Unix</family>
             </os>
         </activation>
    <properties>
        <OpenLdap.ClientTools.home></OpenLdap.ClientTools.home>
        <executable>/usr/local/bin/ldapmodify</executable>
        <argument>-a -x -h localhost -p 389 -D "cn=manager,dc=my-domain,dc=com" -f ${test-users.idif.path} -w secret</argument>
    </properties>
</profile>

这是我使用 exec-maven-plugin 的方式:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                    <configuration>
                        <executable>${executable}</executable>
                        <arguments>
                            <commandlineArgs>${argument}</commandlineArgs>
                        </arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>

然后在 mvn install 之后,我得到了这个错误:

[INFO] --- exec-maven-plugin:1.4.0:exec (default) @ entity-matching-bootstrap ---
/usr/local/bin/ldapmodify: invalid option -- ' '
ldapmodify: unrecognized option -
Add or modify entries from an LDAP server

如果我直接在命令行中 运行 /usr/local/bin/ldapmodify -a -x -h localhost -p 389 -D "cn=manager,dc=ibm,dc=com" -f /home/entity-matching/entity-matching-bootstrap/src/test/resources/test_users.ldif -w secret,它就会成功。那么为什么mvn install时选项无效呢?

问题是您将 <commandlineArgs> 嵌入了 <arguments> 部分。只需删除 <arguments> 部分:

<configuration>
  <executable>${executable}</executable>
  <commandlineArgs>${argument}</commandlineArgs>
</configuration>