2010-03-29 22 views
0

我一直在我的項目中創建一個web應用程序(在struts中),它使用maven-2.2.1-uber.jar link text來管理maven。問題出現在老闆說它必須使用公司創建的一些原型時(所以沒有爲你調皮的男孩預定義原型!)。因此,我使用-DarchetypeRepository選項(使用ServletWrapper獲得完整的Web方向,因爲存儲庫將位於應用程序內部),並且日誌似乎可以找到它,但是構建失敗 - 很可惜 - 使用這個小文本'構建失敗 - 定義的工件不是原型,就像那樣簡單。當然,我有很多信息說,這些信息可以說是不相關的。我已經閱讀了maven權威指南,尋求某種幫助,但最好是一直讓人失望。Java和Maven生成和使用我自己的原型

我的想法是,可能我在所有的文件夾樹的某個地方缺少一些XML實際上是maven,我的pom.xml是一個原型而不是項目。但我確實在網上或手冊中找不到任何東西,它們可以輕鬆解釋原型:生成(使用特殊參數)如何工作,以及必須放置每個文件夾和/或文件的位置。

所以,只是大聲說出我的想法(並希望你明白我想問什麼):我有一個模板,我在做一些xml更改(變量等),然後我必須調用maen和做一個原型:用一個可變項目生成。這個問題似乎是我的實際配合不喜歡我所做的。在生成原型之後,幸運的女巫會創建一些目錄樹併爲我留下一個POM.xml文件,我仍然需要做一些變化和更多的xml管理工作,所以它應該非常友善,不要毀掉任何東西在這個過程中。

任何想法,爲什麼這個maven事情不是開心 - 永遠不會認爲我的原型確實是一個原型? Allthought我認爲代碼是好的,這可能是錯誤的,因爲我使用maven-ubber,並且調用實際的CSMavenCli.main(String [,ClassWorld),我不認爲這是這種情況。

謝謝大家! :)

隨機。

回答

1

But I really, really, can't find anything on the net or in the manuals that explains easy-handed how the archetype:generate (with special parameters) works and where I have to put every folder and/or file.

你最好的選擇是看現有的原型恕我直言,最好的東西接近你在做什麼的來源。

Any ideas why this maven-thing is not happy-ever-after assuming that my archetype is definitely an archetype?

老實說,我不知道我理解你在做什麼,所以,不,不知道。

0

這裏有一個猜測......信息:
'構建失敗 - 定義的工件不是原型',描述了這個問題。

我懷疑從你的網絡應用程序接收的maven構建不是一個原型。
嘗試將您的Web瀏覽器指向您的Web應用程序提供的原型URL,它應該看起來像this

如果不是,請檢查您的Web應用程序是否嘗試將生成的XML作爲視圖模板進行處理,並且XML是使用正確的MIME類型流式傳輸到HttpResponse。
還要檢查原型資源是否不受web.xml中安全定義的保護。

+0

感謝您的迴應:)不幸的是,網絡應用程序正在尋找正確的地方,我服務正確的pom.xml。此外,網絡。xml的安全性非常低,因爲它將成爲一個Intranet項目(它實際上對於開發問題都是禁用的)。我試着用maven控制檯(請參閱我的其他帖子),可能是我失敗的一些maven配置。 謝謝! – Random 2010-03-30 09:56:38

1

首先,感謝回答:)

今天,我想更好地瞭解如何原型的作品在行家here看教程,althought還是很disapointing。

我的問題是,當我嘗試執行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文件夾中的相同。我也嘗試在baseir中將斜槓改爲'\'(以防萬一),但沒有更好的結果。

因爲我現在試圖直接在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目錄\庫,但它也失敗myserably使不同的東西成爲一體。

我希望這篇文章更有洞察力。

感謝所有:) 隨機

編輯:好了,新的數據。我知道調查爲什麼它似乎不是一個原型,似乎mvn archetype:generate -DarchetypeCatalog = local有0原型。所以它似乎沒有安裝。我已經完成了mvn安裝和mvn原型:爬網,但它不起作用。 任何想法,爲什麼它不讓我安裝我自己的原型? 再次感謝:)

再次編輯:解決了本地原型的問題,我必須將archetype-catalog.xml從〜/ .m2/repository /移動到〜/ .m2 /然後就像Maven找到了我的地方原型。奇怪的是,它仍然給我同樣的錯誤。我也更改了我的原型庫和基本目錄。

最後編輯(我希望如此!):好的,我終於找到了錯誤。這太愚蠢了,我覺得我自己寫下來(這已經過了三天了)。我的archetypeArtifactId和我的archetypeGroupId在哪裏交換(我的意思是,一個是另一個)。一旦我開始傳遞corrtect參數(在archetype-catalog.xml中定義,雖然我仍然需要移動到正確的位置),但它開始創造奇蹟。也感謝所有peoplo誰讀或寫:)

相關問題