我有一个包含父项目A的多模块项目,以及两个子项目B和C.项目B依赖于项目C.我使用maven-dependency-plugin将B的依赖项复制到lib /目标/目录中的目录。所以,我可以使用maven-assembly-plugin在最终的zip中包含这个lib /目录。问题是当我在项目B上运行mvn clean包时出现以下错误:
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) ......还有19个
引起:java.io.FileNotFoundException:D:\ path-to-projects-directory \ C \ target \ classes(访问被拒绝)
at java.io.FileInputStream.open(Native Method)
在java.io.FileInputStream。(FileInputStream.java:120)
at org.codehaus.plexus.util.io.FileInputStreamFacade.getInputStream(FileInputStreamFacade.java:36)
at org.codehaus.plexus.util.FileUtils.copyStreamToFile(FileUtils.java:1141)
at org.codehaus.plexus.util.FileUtils.copyFile(FileUtils.java:1048)
at org.apache.maven.plugin.dependency.AbstractDependencyMojo.copyFile(AbstractDependencyMojo.java:192) ......还有23个
有人有想法吗?
我已经在网上做了一些研究,我发现存在这样的问题(参见http://jira.codehaus.org/browse/MWAR-192,这是针对战争的,但我与JAR有类似的问题)。似乎无法访问项目C的target / classes目录来创建C.jar(C.jar必须包含在项目B的lib /目录中)。
由于
答案 0 :(得分:3)
我刚刚使用配置
遇到了这个问题<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<mode>development</mode>
<url>${project.url}</url>
<key>value</key>
</manifestEntries>
</archive>
</configuration>
...
</plugin>
从http://maven.apache.org/plugins/maven-jar-plugin/examples/manifest-customization.html的清单自定义示例提供。我将其诊断为<index>true</index>
,因为当该部分被注释掉时问题消失了,并且验证了这是maven jar插件的版本2.3.2,2.3.1,2.3,2.2,2.1的问题。
根据maven插件jira - 见https://jira.codehaus.org/browse/MJAR-69 - 它刚刚被修复
答案 1 :(得分:0)
我刚刚遇到过这个问题,readOnly元素显然会导致访问被拒绝的消息。无论如何,readOnly元素已被弃用,但我碰巧在较旧的示例中使用它。
答案 2 :(得分:0)
我有同样的问题。我已经通过以下方式解决了这个问题:
右键单击traget文件夹>“属性”>取消选中“只读”选项,并尝试解决问题。
答案 3 :(得分:0)
我尝试了几种方法来解决此问题:
没有成功。
然后我重新启动了机器,target
文件夹神奇地消失了。