我一直忙于在我的项目中使用maven-2.2.1-uber.jar link text创建一个管理maven的webapp(在struts中)。问题来自于老板说它必须使用公司创建的一些原型(所以没有预定的原型给你顽皮的男孩!)。好吧,我使用-DarchetypeRepository选项(使用ServletWrapper我得到完整的Web方向,因为存储库将在应用程序内部),并且日志似乎找到它,但随后构建失败 - 很可怜 - 这个小文本'构建失败 - 定义的工件不是原型'就这么简单。当然,我有很多INFO线,说绝对不相关。我已经阅读了寻求某种帮助的maven权威指南,但它最多也是令人失望的。
我的想法是,我可能在所有文件夹树的某个地方缺少一些xml实际上是我的pom.xml是一个原型而不是项目。但我真的,真的,在网上或手册中找不到任何简单易懂的原型:生成(使用特殊参数)工作以及我必须放置每个文件夹和/或文件的地方。
所以只是大声说出我的想法(并希望你理解我想要问的内容):我有一个模板,我做了一些xml更改(变量等等),然后我必须调用maen和do原型:使用变量项目生成。问题似乎是我的实际情况并不像我在做什么。在原型生成之后,女巫幸运地会创建一些目录树,并留下一个POM.xml,我仍然需要做一些变量更改和更多xml管理的东西,所以它从maven非常友好,不要破坏任何东西在这个过程中。
任何想法为什么这个maven-thing不是很开心 - 因为我认为我的原型是一个原型? 所有我认为代码是好的,它可能是错的,因为我正在使用maven-ubber并且我调用实际的CSMavenCli.main(String [,ClassWorld),我不认为这次是这种情况。
谢谢大家! :)
随机
答案 0 :(得分:1)
但我真的,真的,在网上或手册中找不到任何简单易懂的原型:生成(使用特殊参数)工作以及我必须放置每个文件夹和/或文件的地方。
你最好的选择是查看现有原型恕我直言的来源,理想情况是接近你正在做的事情。
在假设我的原型绝对是一个原型之后,为什么这个maven-thing不开心的任何想法?
老实说,我不确定我是否明白你在做什么,不,不知道。
答案 1 :(得分:1)
首先,谢谢回答:)
今天我正在努力更好地理解原型如何看待maven here的教程,虽然仍然非常令人失望。
我的问题是,当我尝试执行mvn archetype:generate指令时,我在maven中出现构建失败。这是我的问题,尽可能简单。构建问题说'定义的工件不是原型'。
我已尝试过递减的指令archetype:create并且错误或多或少相同,但它添加了'嵌入式错误:无法找到META-INF / maven / archetype.xml描述符。'在我的原型中有一个archetype.xml,因此似乎有一个很好的理由,这个递减的指令会被删除。
我的总指导如下
mvn archetype:generate
-DgroupId=my_groupid
-DartifactId=my_artifactid
-Dversion=1.0
-DarchetypeGroupId=archetype-foo-lib
-DarchetypeArtifactId=my.archetype.foo
-DarchetypeVersion=1.0
-DarchetypeRepository=C:/.m2/repository
-Dbasedir=C:/.m2/repository/archetype-foo-lib
-B
-DinteractiveMode=false
在basedir中,我有pom.xml和dom4j.jar,并且存储库已启动(在一个小的tomcat服务器中)。此外,安装了原型,archetypegroupid,archetypeartifacid和archetypeversion与src \ main \ resources \ archetype-resources文件夹中的原型相同。我也尝试将斜杠更改为基于(&以防万一)的'\',没有更好的结果。
由于我现在正试图直接在maven控制台中执行此操作,因此您可以忘记webapp项目以及所有这些内容。一旦它开始在控制台中工作,我希望它能在那里工作。
唉!我也有堆栈跟踪(因为我也用-e参数完成了这个)
+ Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [archetype:generate] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] Preparing archetype:generate
[INFO] No goals needed for project - skipping
[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus
.velocity.ContextClassLoaderResourceLoader'.
[INFO] Setting property: velocimacro.messages.on => 'false'.
[INFO] Setting property: resource.loader => 'classpath'.
[INFO] Setting property: resource.manager.logwhenfound => 'false'.
[INFO] [archetype:generate {execution: default-cli}]
[INFO] Generating project in Batch mode
[INFO] Archetype defined by properties
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] The defined artifact is not an archetype
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.BuildFailureException: The defined artifact is not an archetype
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:715)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandalone
Goal(DefaultLifecycleExecutor.java:569)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
ltLifecycleExecutor.java:539)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
dleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
ts(DefaultLifecycleExecutor.java:284)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
fecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:6
0)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoFailureException: The defined artifact is
not an archetype
at org.apache.maven.archetype.mojos.CreateProjectFromArchetypeMojo.execu
te(CreateProjectFromArchetypeMojo.java:201)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
nManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:694)
... 17 more
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Tue Mar 30 11:08:59 CEST 2010
[INFO] Final Memory: 8M/15M
[INFO] ------------------------------------------------------------------------
由于存储库可能不好,我还将-Darchetyperepository更改为c:.m2 \ repository,但它也无法完成不同的操作。
我希望这篇文章更具洞察力。
谢谢大家:) 随机
编辑:好的,新数据。我知道调查为什么它似乎不是一个原型,似乎mvn archetype:generate -DarchetypeCatalog = local有0个原型。所以它似乎没有安装。我已经完成了mvn install和mvn archetype:crawl但它不起作用。 任何想法为什么它不让我安装自己的原型? 再次感谢:)
再次编辑:解决了本地原型的问题,我不得不将archetype-catalog.xml从〜/ .m2 / repository /移动到〜/ .m2 /然后就像Maven找到我的本地原型一样。奇怪的是,它仍然给我同样的错误。我也改变了我的原型库和基础目录。
最后编辑(我希望如此!):好吧,我终于找到了错误。它是如此愚蠢我觉得我的自我谦虚地写下来(因为这已经知道三天了)。我的archetypeArtifactId和我的archetypeGroupId交换了(我的意思是,一个是另一个)。一旦我开始传递corrtect参数(在archetype-catalog.xml中定义,虽然,我仍然必须移动到正确的位置),它开始创造奇迹。非常感谢所有读过或写过的人:)
答案 2 :(得分:0)
这是猜测......消息:
'构建失败 - 定义的工件不是原型',描述了问题。
我怀疑maven构建从您的网络应用程序接收的内容不是原型 尝试将您的网络浏览器指向您的网络应用提供的原型网址,它应该类似于this。
如果没有,请检查您的Web应用程序是否正在尝试将生成的XML作为视图模板进行处理,并且XML正在使用正确的mime类型流式传输到HttpResponse。
还要检查原型资源是否受web.xml中安全定义的保护。