运行mvn javadoc:javadoc
时出现以下错误[ERROR]退出代码:1 - javadoc:错误 - 包名称非法: " edu.princeton.cs.1-Fundamentals.1-1-BasicProgModel"
我很清楚的原因,但我不知道如何解决它。
这是我在src/main/java/edu/princeton/cs/
文件夹中的src文件结构。
├── 1-Fundamentals
│ ├── 1-1-BasicProgModel
│ ├── 1-2-DataAbstraction
│ ├── 1-3-BagsQueuesStacks
│ ├── 1-4-AnalysisOfAlgorithms
│ └── 1-5-UnionFind
├── 2-Sorting
│ ├── 2-1-ElementarySorts
│ ├── 2-2-Mergesort
在每个目录中,java代码包含package edu.princeton.cs.algs4
;
这意味着文件夹名称不是包名称。 但是,javadoc错误地认为文件夹名称是包名称。
我怎样才能让maven知道没有像edu.princeton.cs.1-Fundamentals.1-1-BasicProgModel
答案 0 :(得分:1)
你正在尝试使用Maven来反对它的惯例。默认情况下,除非明确说明,否则项目的源根位于src/main/java
下。这意味着下面的任何目录都将被视为包名称的一部分,因此必须与.java源文件中声明的包名匹配。
现在,您可以覆盖约定,并告诉Maven将另一个目录视为源根目录,以便javac或javadoc按预期工作:
::pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>example</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<!--Overrides the default:-->
<!--<sourceDirectory>src/main/java</sourceDirectory>-->
<sourceDirectory>./path/relative/to/pom.xml/</sourceDirectory>
</build>
</project>
由于此项目中有多个源根,因此您可以考虑为每个源添加单独的pom.xml,或者更改布局并使用pom.xml中的其他插件添加其他源目录:
项目结构:
Project Directory
├── 1-Fundamentals
│ ├── 1-1-BasicProgModel
│ │ ├──src
│ │ │ └──edu/princeton/cs/algs4 (only classes and directories matching packages)
│ │ │ ├── JavaClass1.java
│ │ │ └── JavaClass2.java
│ │ └── other non source content
│ ├── 1-2-DataAbstraction
│ │ ├──src
│ │ │ └──edu/princeton/cs/algs4
│ │ │ ├── JavaClass3.java
│ │ │ └── JavaClass4.java
│ │ └── other non source content
│ └── 1-3-BagsQueuesStacks
│ ├──src
│ │ └──edu/princeton/cs/algs4
│ │ ├── JavaClass5.java
│ │ └── JavaClass6.java
│ └── other non source content
└── pom.xml
告诉maven源根源在哪里:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>example</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals><goal>add-source</goal></goals>
<configuration>
<sources>
<source>1-Fundamentals/1-1-BasicProgModel/src</source>
<source>1-Fundamentals/1-2-DataAbstraction/src</source>
<source>1-Fundamentals/1-3-BagsQueuesStacks/src</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
答案 1 :(得分:0)
您的路径是否包含空格。如果任何目录名称包含空格,则 javadoc 插件似乎失败了。
示例:
糟糕的路线:我的项目/项目 java/我的新游戏
好的路线:MyProject/Project-java/My-new-game