2013-10-02 109 views
27

我想用一个不同的源目录特定Maven的配置文件,但是,当我尝试在配置文件定义指定它,我得到这个错误:更改源代码目录

Unrecognised tag: 'sourceDirectory' (position: START_TAG seen ...<build>\r\n\t\t\t\t<sourceDirectory>...) 

的定义聚甲醛如下:

<profile> 
    <id>development</id> 
    <build> 
     <sourceDirectory>${project.build.directory}/new-src</sourceDirectory> 
     . 
     . 
     . 
    </build> 
</profile> 

我所试图做的是它的编译前的源文件处理当且仅当此配置文件被激活。我的进程将动态更改源文件,将更改后的源文件放在“new-src”目录中,并编译该目录,就像它是通常的“src/main/java”一样。生命周期中的其他一切应该正常运行。如果这种方法存在缺陷,谁能指出我正确的方向?

回答

46

根据documentation,您只能在配置文件中更改<build>参数,而<sourceDirectory>不是其中之一。

我会配置主要<build>采取从路径源通过一些属性定义,该属性设置为src/main/java和覆盖它的自定义配置文件(如src.dir):

<project> 
    ... 
    <properties> 
     <src.dir>src/main/java</src.dir> 
    </properties> 
    <build> 
     <sourceDirectory>${src.dir}</sourceDirectory> 
     ... 
    </build> 
    <profiles> 
     <profile> 
      <id>development</id> 
      <properties> 
       <src.dir>${project.build.directory}/new-src</src.dir> 
      </properties> 
     </profile> 
    </profiles> 
</project> 
+0

这做的伎俩,非常感谢你! – amaurs

+0

因此,如果(在Eclipse Luna中)我添加(链接)在我的BuildPath中(单击我的MavenProject上的鼠标右键)其目录为“/ Users/MyName/Desktop/source”的源文件夹,我必须编写'/Users/MyName/Desktop/source '??一切顺利吗? – Aerox

0

请参阅Maven model,不允许在配置文件中定义sourceDirectory。你可以做的唯一事情就是在插件配置中指定sourceDirectory,假设它是可用的。