Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

Outline

Auto Common Utilities

Overview

The Auto project has a set of common utilities to help ease use of the annotation processing environment.

Utility classes of note

  • MoreTypes - utilities and Equivalence wrappers for TypeMirror and related subtypes
  • MoreElements - utilities for Element and related subtypes
  • SuperficialValidation - very simple scanner to ensure an Element is valid and free from distortion from upstream compilation errors
  • Visibility - utilities for working with Elements' visibility levels (public, protected, etc.)
  • BasicAnnotationProcessor/ProcessingStep - simple types that
    • implement a validating annotation processor
    • defer invalid elements until later
    • break processor actions into multiple steps (which may each handle different annotations)

Usage/Setup

Auto common utilities have a standard Maven setup which can also be used from Gradle, Ivy, Ant, or other systems which consume binary artifacts from the central Maven binary artifact repositories.

<dependency>
  <groupId>com.google.auto</groupId>
  <artifactId>auto-common</artifactId>
  <version>1.0-SNAPSHOT</version> <!-- or use a known release version -->
</dependency>

Processor Resilience

Auto Common Utilities is used by a variety of annotation processors in Google and new versions may have breaking changes. Users of auto-common are urged to use shade or jarjar (or something similar) in packaging their processors so that conflicting versions of this library do not adversely interact with each other.

For example, in a Maven build you can repackage com.google.auto.common into your.processor.shaded.auto.common like this:

<project>
  <!-- your other config -->
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <artifactSet>
                <excludes>
                  <!-- exclude dependencies you don't want to bundle in your processor -->
                </excludes>
              </artifactSet>
              <relocations>
                <relocation>
                  <pattern>com.google.auto.common</pattern>
                  <shadedPattern>your.processor.shaded.auto.common</shadedPattern>
                </relocation>
              </relocations>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
Morty Proxy This is a proxified and sanitized view of the page, visit original site.