2

我得到了一个 liferay-portlet-project,其中包含一个我想成为原型的示例应用程序/portlet。在项目内部有一个文件夹,其中包含两个*.launch用于重新部署 webapp 的文件。两者都有以下我遇到问题的行:

<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/rawportlet}"/>

其中“rawportlet”是项目的名称。如果我手动将其更改${artifactId}为此变量,则在使用原型创建项目时无法解析。在项目生成期间解决这个变量会很好。

有没有办法做到这一点?还是解决方法?在此先感谢您的帮助。

4

2 回答 2

1

解决方法:编写一个用户可以在使用原型后运行的 maven 目标。所以步骤将是(例如):

  1. 从原型生成项目

    mvn archetype:generate -DarchetypeCatalog=local

  2. 进行一些生成后清理(在项目的基本目录中执行)

    mvn antrun:run

所以我的代码在原型的“pom.xml”中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <id>default-cli</id>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <tasks>
                <replace token= "rawportlet" value="${artifactId}" dir="runConfigs">                                 
                  <include name="**/*.launch"/>
                </replace>
              </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

“runConfigs”目录是*.launch存储文件的地方。

学分:

复制资源时完全搜索和替换源文件中的字符串

Maven,配置具体目标

于 2012-11-02T08:15:14.710 回答
0

我有同样的问题,并且我使用了另一种可以正常工作的解决方案(但也不完美)。

value="${workspace_loc}/${artifactId}"在您的启动配置中使用。

只要人们在工作区根目录执行 archetype:gen,这将起作用。这对我来说比选择的答案更好,因为运行该后处理需要另一个启动配置(这在某种程度上违背了整个目的)。

于 2013-06-25T02:29:36.820 回答