[英]Mojo development : access to javadoc com.sun.tools.javadoc.Main class
[英]Javadoc generation failed : ClassCastException: com.sun.tools.javadoc.ClassDocImpl cannot be cast to com.sun.javadoc.AnnotationTypeDoc
我這樣做時會出現以下錯誤
mvn clean deploy -DperformRelease=true
[錯誤]退出代碼:1 - .java:3:包javax.inject不存在
[錯誤]導入javax.inject.Named;
[錯誤] ^
[ERROR] TransactionServiceExternalImpl.java:5:找不到符號
[錯誤]符號:類命名
[錯誤] @Named(“transactionServiceExternal”)
[錯誤] ^
[錯誤] java.lang.ClassCastException:com.sun.tools.javadoc.ClassDocImpl無法強制轉換為com.sun.javadoc.AnnotationTypeDoc
POM就是這個......
<groupId>com.xxx</groupId>
<artifactId>ts-impl/artifactId>
<version>2.4.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
</dependencies>
只有一節課......
import javax.inject.Named;
@Named("transactionServiceExternal")
public class TransactionServiceExternalImpl
{
}
我得到了錯誤
但不是......
有人有想法么?
備注:Apache Maven 3.0.4(r1232337; 2012-01-17 08:44:56 + 0000)
我現在知道原因是Maven Javadoc插件已經從2.9.1變為2.10。 這就是問題的原因。
我可以看到這個警告......
[警告] org.apache.maven.plugins的'build.plugins.plugin.version':缺少maven-javadoc-plugin。 [警告] org.apache.maven.plugins的'build.plugins.plugin.version':缺少maven-deploy-plugin。
通過在我的pom中設置以下內容....
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
我可以將版本修復回上一版本。
我將向Maven Javadoc創建者提出一個錯誤。
http://jira.codehaus.org/browse/MJAVADOC-407
請注意:您可以克隆版本2.9.1的SVN repo,將pom更新為2.10.1,執行mvn安裝將其放入您的M2文件夾中。 你應該重新開始工作,只需要在真正發布時刪除這個tmp版本。
在我們的項目中遇到同樣的問題。 很多人都有這個問題所以應該是關於maven-javadoc-plugin的問題,因為maven-javadoc-plugin打破了mvn release:在第一個答案中說明了。 jira問題是http://jira.codehaus.org/browse/MJAVADOC-408 。
時間解決方案:
-Dmaven.javadoc.skip=true
選項執行構建 <maven.javadoc.failOnError>false</maven.javadoc.failOnError>
<pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> </plugin> </plugins> </pluginManagement>
我希望問題很快得到解決。
更新根據Noremac的評論,如果您正在使用發布插件並希望將參數傳遞給它,正確的方法是-Darguments =“ - Dmaven.javadoc.skip = true”。
在我的回答中保持另一種方式,因為這發生在使用javadoc的任何maven構建中。
更新2此外,評論中的TheConstructor說2.10.1版本修復了這個問題。 我無法檢查出來。
我們遇到了同樣的問題,我們通過明確地將Maven Javadoc插件版本指定為2.9.1來暫時解決了這個問題
來自jira http://jira.codehaus.org/browse/MJAVADOC-407 :
構建類(包括第三方依賴項)不再位於javadoc類路徑上
但是,如果我將依賴添加到maven-javadoc-plugin:
...
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10</version>
<dependencies>
<dependency>
<groupId>org.apache.cayenne</groupId>
<artifactId>cayenne-server</artifactId>
<version>3.1B2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
</build>
...
這沒有用。
這有點對我有用,我必須以這種方式添加插件,因為我們已經為構建設置了其他插件。 注意我從以下示例中刪除了我們的其他插件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</build>
將此添加到父pom:
<build>
...
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</pluginManagement>
...
<build>
解決問題
使用以下插件生成java文檔。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.