0

我一直忙于我的项目创建一个管理 maven 的 webapp(在 struts 中),使用 maven-2.2.1-uber.jar链接文本。当老板说它必须使用公司创建的一些原型时,问题就来了(所以你这个顽皮的男孩没有预定义的原型!)。好吧,我使用 -DarchetypeRepository 选项(使用 ServletWrapper,我得到了完整的网络方向,因为存储库将在应用程序内),并且日志似乎找到了它,但随后构建失败 - 很遗憾 - 带有这个小文本'构建失败 - 定义的工件不是那么简单的原型。当然,我有很多 INFO 行说绝对没有任何相关性。我已经阅读了 maven 权威指南以寻求某种帮助,但它充其量是令人失望的。

我的想法是,也许我在所有文件夹树的某个地方都缺少一些 xml,这些 xml 实际上表明我的 pom.xml 是一个原型而不是一个项目。但我真的,真的,在网上或手册中找不到任何东西来解释原型:生成(带有特殊参数)的工作原理以及我必须将每个文件夹和/或文件放在哪里。

所以只是大声说出我的想法(希望你明白我想问的问题):我有一个模板,我在其中做一些 xml 更改(变量等......),然后我必须调用 maen 并做一个原型:使用变量项目生成。问题似乎是我的实际配置不喜欢我正在做的事情。在原型生成之后,幸运的是,女巫会创建一些目录树,并在某个地方留下一个 POM.xml 我仍然需要做一些变量更改和更多的 xml 管理东西,所以从 maven 那里可以非常友好地不要破坏任何东西在这个过程中。

任何想法为什么这个 maven 的东西在假设我的原型绝对是一个原型之后永远不会快乐?虽然我认为代码没问题,但可能是错误的,因为我使用的是 maven-ubber 并且我调用了实际的 CSMavenCli.main(String[, ClassWorld),我认为这次不是这样。

谢谢大家!:)

随机的。

4

3 回答 3

1

首先感谢您的回答:)

今天,我试图通过查看此处的 maven 教程来更好地了解原型的工作原理,尽管这仍然非常令人失望。

我的问题是,当我尝试执行 mvn archetype:generate 指令时,我在 maven 中构建失败。这是,尽可能简单,我的问题。构建问题说“定义的工件不是原型”。

我已经尝试了 decreapted 指令 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 服务器中)。此外,archetype 已安装,archetypegroupid、archetypeartifacid 和 archetypeversion 与 src\main\resources\archetype-resources 文件夹中的相同。我还尝试将 basedir 中的斜杠更改为“\”(以防万一),但没有更好的结果。

因为我现在正尝试直接在 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 但它不起作用。任何想法为什么它不允许我安装自己的原型?再次感谢 :)

再次编辑:解决了本地原型的问题,我不得不将原型-catalog.xml 从 ~/.m2/repository/ 移动到 ~/.m2/,然后就像 Maven 找到我的本地原型一样。奇怪的是,它仍然给我同样的错误。我还更改了我的原型存储库和基本目录。

最后编辑(我希望如此!):好吧,我终于找到了错误。太愚蠢了,我觉得自己很惭愧写下来(因为这个,知道已经三天了)。我的archetypeArtifactId 和我的archetypeGroupId 在哪里交换(我的意思是,一个是另一个)。一旦我开始传递正确的参数(在 archetype-catalog.xml 中定义,尽管我仍然必须移动到正确的位置),它就开始创造奇迹。也感谢所有阅读或写作的人:)

于 2010-03-30T09:15:27.197 回答
1

但我真的,真的,在网上或手册中找不到任何东西来解释原型:生成(带有特殊参数)的工作原理以及我必须将每个文件夹和/或文件放在哪里。

您最好的选择是查看现有原型恕我直言的来源,最好是与您正在做的事情接近的东西。

假设我的原型绝对是原型之后,为什么这个 maven-thing 永远不快乐?

老实说,我不确定我是否理解你在做什么,不,不知道。

于 2010-03-30T07:33:14.710 回答
0

这是一个猜测......消息:
'构建失败 - 定义的工件不是原型',描述了问题。

我怀疑 Maven 构建从您的网络应用程序接收的不是原型。
尝试将您的网络浏览器指向您的网络应用程序提供的原型 url,它应该看起来像这样

如果没有,请检查您的 Web 应用程序是否未尝试将生成的 XML 处理为视图模板,并且 XML 正在以正确的 mime 类型流式传输到 HttpResponse。
还要检查原型资源是否不受 web.xml 中的安全定义保护。

于 2010-03-30T08:35:05.760 回答