2015-10-27 61 views
2

我一直被困在一个特定的Maven任务中一段时间​​了,我一直无法找到任何特定的任务。将Maven依赖项复制到项目结构中

我想在我的内部Maven仓库(Sonatype Nexus)中作为依赖托管几个文件。值得注意的是,我需要它将放置到项目结构中的特定文件夹中。

换句话说,我需要依赖以设置成/src/WebContent/VAADIN/themes/${project.name}/

纵观this helpful page from the Maven website我能够依赖复制到硬盘在我想要的确切位置,但它实际上并不是项目本身的一部分,所以其他类别不知道它在那里。这里是确切的代码,但它主要是从链接的网页副本:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.10</version> 
    <executions> 
     <execution> 
      <id>copy</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
        <artifactItem> 
         <groupId>com.dsa.mobi</groupId> 
         <artifactId>DSAStyles</artifactId> 
         <version>1.0.0</version> 
         <type>jar</type> 
         <overWrite>true</overWrite> 
         <outputDirectory>${project.build.sourceDirectory}/main/webapp/VAADIN/themes/${project.name}/</outputDirectory> 
        </artifactItem> 
       </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
    </plugin> 

任何帮助将不胜感激,哪怕它只是一个给一些文档链接,可能会清除这个了 - 我看着所有的Maven的XML文档,这是混淆发现和更多的混淆导航,但我还没有找到这个灵丹妙药。>

在此先感谢!

编辑:

下面是在Eclipse的Project Explorer中的文件夹结构的图像: Project Structure

正如你所看到的,只有addons.scss和fisafetyapp.scss此文件夹中显示出来,而我m试图让Maven /依赖项将文件插入到这个确切的位置。

在磁盘上,依赖项正确放置在此文件夹中,即C:/ myuser/fisafetyapp/src/main/webcontent/vaadin/themes/fisafetyapp /。但是,它并没有显示在Project Explorer中,这使得其他文件无法看到它,因为该位置非常具体。

+0

这是你在找什么:'project.build.outputDirectory'? – kamaci

+0

嘿kamaci, 我尝试project.build.outputDirectory的funsies,但这将/ target/etcetcetc,这是有道理的'输出',但我想解决的问题是让它进入正确的文件夹中该项目*源*结构,IE什么时你会看到在Eclipse中的项目浏览器看到 – user3003246

+0

它是['/提供'](https://maven.apache.org/pom.html#Dependencies)什么你正在找? –

回答

0

你的说法是正确的,而不是在你的POM声明忘记依赖性:

<dependency> 
    <groupId>com.dsa.mobi</groupId> 
    <artifactId>DSAStyles</artifactId> 
    <version>1.0.0</version> 
</dependency> 
+0

我很欣赏这个回应!不幸的是,在之前添加后,没有任何变化 - 它仍然复制到C:\ path \目录下,但它只在磁盘上执行,并且与项目本身没有任何关联。我们的目标是让它安装到项目的一个目录中,而不仅仅是在某个地方的磁盘上[为了清楚起见,磁盘上的路径'在项目中',但是Eclipse不知道该文件是否存在,因此它实际上不可见项目] – user3003246

+0

@ user3003246你确切的意思是“_do与项目本身没有任何关联_”?如果一个库被声明为一个依赖项,正如_q_m_c_所示,Maven解析了来自本地(或远程)库的依赖关系,并且这个内容可以被项目使用。这是_association_。 –

+0

我编辑了原始文章,以包含图像和更多的解释 - 我希望清除一点点。本质上,文件存在于磁盘上,但不会放置在Project Explorer目录设置中,并且以这种方式,CSS @import语句找不到它们。 [[我意识到这些文件现在被打包成JAR格式,我认为只要将它们正确放置,拆解JAR就是第2步]] – user3003246

0

复制与maven-dependency-plugin的依赖到src/main/resources文件夹中generate-resources阶段(不要忘记这些文件添加到源控制忽略列表)。然后资源插件会自动将其复制到target/classes文件夹中,并且它也会自动添加到您的最终工件中。

相关问题