从github检出netty项目,编译遇到问题总结

Maven学习记录3——创建、编译、打包、运行项目 :[url]http://blog.csdn.net/yaya1943/article/details/48464371[/url]
使用maven编译Java项目:[url]http://www.tuicool.com/articles/YfIfIrq[/url]
netty github 导入 Eclipse:[url]http://www.th7.cn/Program/java/201502/389732.shtml[/url]
netty源码编译环境搭建 :[url]http://blog.csdn.net/wuyinxian/article/details/46382051[/url]
Plugin error: execution not covered by lifecycle configuration:
[url]https://stackoverflow.com/questions/7391201/plugin-error-execution-not-covered-by-lifecycle-configuration[/url]
Execution Not Covered:[url]http://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html[/url]
netty项目github地址:[url]https://github.com/netty/netty.git[/url]
由于netty项目在github中,没有.project和.classpath文件,所以不能够直接转换为eclipse工程Maven项目,要手动去编译,具体可参考netty源码编译环境搭建和netty github导入Eclipse这两篇文章。
我们总结一下从github检出netty项目,编译maven项目,主要遇到的问题:
[size=medium][b]1.Failure to transfer io.netty:netty-tcnative:jar:${tcnative.classifier}:2.0.3.Final[/b][/size]
这个问题主要是tcnative jar在netty-parent:
io.netty
netty-parent
pom
4.1.13.Final-SNAPSHOT

的POM中定义了如下片段:
netty-tcnative
2.0.3.Final
${os.detected.classifier}

根据操作系统探测tcnative的classifier,我们只需要将上面这句话注释掉如下:

同时在相应子模块项目中,tcnative包依赖中将:

${project.groupId}
${tcnative.artifactId}
${tcnative.classifier}
true

改为:

${project.groupId}
${tcnative.artifactId}

${tcnative.version}
true

这里我们是以netty-handler子模块为例:

io.netty
netty-parent
4.1.13.Final-SNAPSHOT

netty-handler
jar

[size=medium][b]2.Plugin execution not covered by lifecycle configuration:
org.codehaus.mojo:build-helper-maven-plugin:1.10:add-source
(execution: add-source, phase: generate-sources)[/b][/size]
这个问题主要是执行不能被声明周期配置覆盖导致,我们以netty-common子模块为例:
 
org.codehaus.mojo
build-helper-maven-plugin
1.10


add-source
generate-sources

add-source



${collection.src.dir}




groupId为org.codehaus.mojo,artifactId为build-helper-maven-plugin的add-source执行不行被生命周期覆盖,解决方式,在pom文件的build标签下加入pluginManagement对应的片段:




org.eclipse.m2e
lifecycle-mapping
1.0.0








org.codehaus.mojo
build-helper-maven-plugin

[1.0.0,)


add-source
add-test-source












org.codehaus.mojo
xml-maven-plugin
[1.0.0,)

parse-version
check-style











org.codehaus.gmaven
groovy-maven-plugin
[1.0.0,)

execute














还有一种方式为配置Maven -> Lifecycle mapping->lifecycle-mapping-metadata.xml ,
官方显示这种方法针对Eclipse 4.2,具体配置在Windows -> Preferences -> Maven -> Lifecycle mapping ,文件(eclipse/plugins/org.eclipse.m2e.lifecyclemapping.defaults_1.2.0.20120903-1050.jar/lifecycle-mapping-metadata.xml)内容如下:





org.codehaus.mojo
buildnumber-maven-plugin

create-timestamp

[0.0,)








org.apache.maven.plugins
maven-dependency-plugin

list

[0.0,)








org.zeroturnaround
jrebel-maven-plugin

generate

[0.0,)








org.codehaus.mojo
gwt-maven-plugin

compile

[0.0,)








org.apache.maven.plugins
maven-dependency-plugin

copy-dependencies
unpack

[0.0,)







[color=red]注意:pluginExecutionFilter中的groupId,artifactId,goal的对应关系。[/color]

在配置完后记得要重新加载。如果你有多个Eclipse工作空间或者为一个团队项目,强烈建立使用配置POM文件的方式,,即第一种方式。

然后更新项目模块(maven-》update勾选force online update)。

如果还有问题,看看是不是JRE的原因(JRE6-8),一般为JRE7,

如果项目没有maven依赖包(Maven Dependencies),查看项目的.class
和.project文件
[b].class文件是否包含如下信息:[/b]










不包括,则添加上,不同,则修改。

[b].project文件是否为如下:[/b]


netty_trunk





org.eclipse.jdt.core.javabuilder




org.eclipse.m2e.core.maven2Builder





org.eclipse.m2e.core.maven2Nature
org.eclipse.jdt.core.javanature

>
对于没有含有项,则添加上,不同,则修改。

最后,记得刷新工作空间项目。

你可能感兴趣的:(Maven,Netty)