0

我是 maven 的新手,一开始遇到了一个看起来很容易的问题,但我已经让我忙了一整天,没有办法让它工作。

首先,作为运行 eclipse:eclipse 插件的一部分,我创建了一个链接文件夹,如下所示:

<linkedResources>
<linkedResource>
    <name>properties</name>
    <type>2</type>
    <location>${PARENT-2-PROJECT_LOC}/some_other_project/properties</location>
</linkedResource>
<linkedResource>
    <name>properties/messages.properties</name>
    <type>1</type>
    <location>${PARENT-2-PROJECT_LOC}/some_other_project/properties/messages.properties</location>
</linkedResource>

然后我将该文件夹添加为源文件夹,如下所示:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
  <execution>
    <id>add-source</id>
    <phase>generate-sources</phase>
    <goals>
      <goal>add-source</goal>
    </goals>
    <configuration>
      <sources>
        <source>properties</source>
        <source>some_real_folder</source>
      </sources>
    </configuration>
  </execution>
</executions>
</plugin>

但是,当我在 eclipse 中查看生成的 .classpath 时,“some_real_folder”在那里,但“properties”却没有。看起来默认情况下 build-helper-maven-plugin 将检查文件夹是否存在,如果不存在则不会添加它。

我在 Eclipse 之外使用 maven 3.0.4 来运行构建,我可以在 maven 日志中看到如下内容:

[INFO] Source directory: <some path>\properties added.

这是我的项目结构:

project1 
  \-- properties (this is the real folder) 

project2
   \-- some_real_folder
   \-- properties (this is the link resource pointing to the project1/properties folder)

我只需要将“some_real_folder”和链接资源“properties”都添加到project2的.classpath

4

1 回答 1

0

将来自人工制品外部的东西直接包含到人工制品中是一种不好的做法。您应该只将文件夹 project2 下的 project2 内容和 project2 依赖项中的内容包含到 project2 中。(我不确定你正在做的事情是否可能。)

所以,如果你想让 project1/properties 在 project2 中可用,你通常将 project1/properties 打包到 project1 的 artefact 中,并将对 project1 的依赖添加到 project2 中。如果由于某种原因这不起作用(例如,因为您想将 project1 的东西移动到 project2 中的另一个位置),您可以使用maven-dependency-plugin dependency:copy-dependencies 将其解压到 project2 的目标中到某个适当的位置。

于 2012-11-27T11:02:58.587 回答