在 IntelliJ 中使用 cofoja 注释
Using cofoja annotations in IntelliJ
我是 IntelliJ 的新手。尝试使用 cofoja 代码注释时,我在构建时收到以下错误。
Error:java: error in contract: package com.google.java.contract.core.agent does not exist
Error:java: error in contract: package com.google.java.contract does not exist
我的项目针对 Oracle JDK 1.7。我正在使用 io.konverge 发布的 cofoja 版本和 IntelliJ 14.1.4.
<dependency>
<groupId>io.konverge</groupId>
<artifactId>cofoja</artifactId>
<version>2.0.0</version>
</dependency>
在使用 maven 从命令行构建项目时,我没有收到遇到的错误。
编辑:
这是一个示例 cofoja 项目,它可以用 maven 很好地编译,但我不能在 IntelliJ 中构建它。
https://github.com/konvergeio/cofoja-example
我已将此项目的 IntelliJ DEBUG 构建日志附加到 GitHub 的 cofoja
项目票中:https://github.com/nhatminhle/cofoja/issues/45
编辑 2:
更新了特定于 cofoja-example
项目的问题。
我能够成功配置 IntelliJ。希望有人觉得这有用。
我必须为当前项目配置注释处理器。它默认启用,但没有 classoutput
、classpath
和 sourcepath
设置所需的适当配置。我发现 $PROJECT_DIR$
宏可以为适当的项目目录创建相对路径。 IntelliJ 在我的本地 Maven 存储库中预先配置了 macro/variable,所以我用它来引用 konvergeio 发布的 cofoja 版本。
我把我的配置截图了:
IntelliJ 生成的构建日志:
2015-07-12 14:04:11,448 [ 1223] DEBUG - s.incremental.java.JavaBuilder - Compiling chunk [cofoja-example] with options: "-g -deprecation -encoding UTF-8 -source 1.7 -target 1.7 -Acom.google.java.contract.sourcepath=/home/seglo/source/cofoja-example/src/main/java -Acom.google.java.contract.classpath=/home/seglo/.m2/repository/io/konverge/cofoja/2.0.0/cofoja-2.0.0.jar -Acom.google.java.contract.classoutput=/home/seglo/source/cofoja-example/target/classes -s /home/seglo/source/cofoja-example/target/generated-sources/annotations"
我将 Nas 的 cofoja-example
项目的 fork 推送到我的 github。我包含了 IntelliJ 项目设置。
https://github.com/seglo/cofoja-example
我的项目.idea/compiler.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<option name="DEFAULT_COMPILER" value="Javac" />
<resourceExtensions />
<wildcardResourcePatterns>
<entry name="!?*.java" />
<entry name="!?*.form" />
<entry name="!?*.class" />
<entry name="!?*.groovy" />
<entry name="!?*.scala" />
<entry name="!?*.flex" />
<entry name="!?*.kt" />
<entry name="!?*.clj" />
<entry name="!?*.aj" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
<profile default="false" name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<option name="com.google.java.contract.classoutput" value="$PROJECT_DIR$/target/classes" />
<option name="com.google.java.contract.classpath" value="$MAVEN_REPOSITORY$/io/konverge/cofoja/2.0.0/cofoja-2.0.0.jar" />
<option name="com.google.java.contract.sourcepath" value="$PROJECT_DIR$/src/main/java" />
<processorPath useClasspath="true" />
<module name="cofoja-example" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="cofoja-example" target="1.7" />
</bytecodeTargetLevel>
</component>
</project>
我是 IntelliJ 的新手。尝试使用 cofoja 代码注释时,我在构建时收到以下错误。
Error:java: error in contract: package com.google.java.contract.core.agent does not exist
Error:java: error in contract: package com.google.java.contract does not exist
我的项目针对 Oracle JDK 1.7。我正在使用 io.konverge 发布的 cofoja 版本和 IntelliJ 14.1.4.
<dependency>
<groupId>io.konverge</groupId>
<artifactId>cofoja</artifactId>
<version>2.0.0</version>
</dependency>
在使用 maven 从命令行构建项目时,我没有收到遇到的错误。
编辑:
这是一个示例 cofoja 项目,它可以用 maven 很好地编译,但我不能在 IntelliJ 中构建它。
https://github.com/konvergeio/cofoja-example
我已将此项目的 IntelliJ DEBUG 构建日志附加到 GitHub 的 cofoja
项目票中:https://github.com/nhatminhle/cofoja/issues/45
编辑 2:
更新了特定于 cofoja-example
项目的问题。
我能够成功配置 IntelliJ。希望有人觉得这有用。
我必须为当前项目配置注释处理器。它默认启用,但没有 classoutput
、classpath
和 sourcepath
设置所需的适当配置。我发现 $PROJECT_DIR$
宏可以为适当的项目目录创建相对路径。 IntelliJ 在我的本地 Maven 存储库中预先配置了 macro/variable,所以我用它来引用 konvergeio 发布的 cofoja 版本。
我把我的配置截图了:
IntelliJ 生成的构建日志:
2015-07-12 14:04:11,448 [ 1223] DEBUG - s.incremental.java.JavaBuilder - Compiling chunk [cofoja-example] with options: "-g -deprecation -encoding UTF-8 -source 1.7 -target 1.7 -Acom.google.java.contract.sourcepath=/home/seglo/source/cofoja-example/src/main/java -Acom.google.java.contract.classpath=/home/seglo/.m2/repository/io/konverge/cofoja/2.0.0/cofoja-2.0.0.jar -Acom.google.java.contract.classoutput=/home/seglo/source/cofoja-example/target/classes -s /home/seglo/source/cofoja-example/target/generated-sources/annotations"
我将 Nas 的 cofoja-example
项目的 fork 推送到我的 github。我包含了 IntelliJ 项目设置。
https://github.com/seglo/cofoja-example
我的项目.idea/compiler.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<option name="DEFAULT_COMPILER" value="Javac" />
<resourceExtensions />
<wildcardResourcePatterns>
<entry name="!?*.java" />
<entry name="!?*.form" />
<entry name="!?*.class" />
<entry name="!?*.groovy" />
<entry name="!?*.scala" />
<entry name="!?*.flex" />
<entry name="!?*.kt" />
<entry name="!?*.clj" />
<entry name="!?*.aj" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
<profile default="false" name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<option name="com.google.java.contract.classoutput" value="$PROJECT_DIR$/target/classes" />
<option name="com.google.java.contract.classpath" value="$MAVEN_REPOSITORY$/io/konverge/cofoja/2.0.0/cofoja-2.0.0.jar" />
<option name="com.google.java.contract.sourcepath" value="$PROJECT_DIR$/src/main/java" />
<processorPath useClasspath="true" />
<module name="cofoja-example" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="cofoja-example" target="1.7" />
</bytecodeTargetLevel>
</component>
</project>