-
Notifications
You must be signed in to change notification settings - Fork 23
/
apt.html
154 lines (124 loc) · 6.98 KB
/
apt.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!--link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"-->
<link rel="stylesheet" href="/gfx/bootstrap.min.css">
<link rel="stylesheet" href="/gfx/main.css">
<link rel="stylesheet" href="/gfx/code.css">
<title>Using annotation processor in IDE</title>
</head>
<body class="page">
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-PMJSKV"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-PMJSKV');</script>
<!-- End Google Tag Manager -->
<header>
<div class="container">
<a href="/">Immutables</a> ←
<h1>Using annotation processor in IDE <iframe src="https://ghbtns.com/github-btn.html?user=immutables&repo=immutables&type=star&count=true&size=large" frameborder="0" scrolling="0" width="160px" height="30px"></iframe>
</h1>
</div>
</header>
<aside id="toc"></aside>
<section class="documentation">
<hr />
<p>Overview
——–</p>
<p>As of Java 6, annotation processing became a part of the standard Java compiler.
Java 7 or higher is required to run the <em>Immutables</em> annotation processor.
The <em>Immutables</em> annotation processor runs under any Java build tool that uses <code class="language-plaintext highlighter-rouge">javac</code> as the compiler backend
(assuming that annotation processing is not disabled in the build tool configuration).
The <em>Eclipse JDT compiler</em> (ECJ) also supports this annotation processor.</p>
<p>Nowadays, major IDEs support annotation processing almost out of the box.
However, something usually has to be configured or quirks may exist that prevent the processor from functioning correctly.</p>
<p>The annotation processor that is to be plugged into a given IDE is built as single jar without external dependencies.</p>
<ul>
<li><a href="https://search.maven.org/artifact/org.immutables/value/2.10.1/jar">org.immutables:value:2.10.1</a></li>
</ul>
<hr />
<p>Eclipse
——-</p>
<p>If you are using Maven, then <code class="language-plaintext highlighter-rouge">m2e</code> should configure annotation processing for you. However, for this to work, the <code class="language-plaintext highlighter-rouge">m2e-apt</code> connector should be installed first. Install it from the Eclipse marketplace.</p>
<p><img src="pix/eclipse-marketplace.png" /></p>
<p>Enable JDT/APT autoconfiguration from Maven dependencies globally or per project.
<img src="https://developer.jboss.org/servlet/JiveServlet/downloadImage/38-4947-18599/620-226/m2e-apt-prefs.png" /><br />
<em>(Picture linked from <a href="https://developer.jboss.org/en/tools/blog/2012/05/20/annotation-processing-support-in-m2e-or-m2e-apt-100-is-out">developer.jboss.org</a>)</em></p>
<p>After this, on each <code class="language-plaintext highlighter-rouge">m2e</code> Maven project import/update, annotation processors will be configured from the classpath.</p>
<ul>
<li><a href="https://github.com/jbosstools/m2e-apt">jbosstools/m2e-apt project page</a></li>
</ul>
<p>###Manual configuration tutorial</p>
<p>Here’s a dialog configuration example to manually configure the annotation processor assuming that jar is already installed in the local Maven repository.
Enable annotation processing in the project settings, and then configure the factory path to point to the annotation processor jar.
In this example, this is achieved by extending the <code class="language-plaintext highlighter-rouge">M2_REPO</code> classpath variable defined by <code class="language-plaintext highlighter-rouge">m2e</code>. But otherwise you can add jars from other places.</p>
<p><img src="pix/eclipse-annotation-processing.png" /></p>
<p><img src="pix/eclipse-factory-path.png" /></p>
<p>Use the correct jar from <code class="language-plaintext highlighter-rouge">M2_REPO</code>:</p>
<ul>
<li><a href="https://search.maven.org/artifact/org.immutables/value/2.10.1/jar">org.immutables:value:2.10.1</a></li>
</ul>
<hr />
<p>IntelliJ IDEA
————-
To configure annotation processing in IntelliJ IDEA, use dialog
<em>Preferences</em> > <em>Project Settings</em> > <em>Compiler</em> > <em>Annotation Processors</em>.</p>
<p>Obtain annotation processors from the project classpath and specify output directories.</p>
<p><img src="http://restx.io/images/docs/idea-annotation-processor-preferences.png" /><br />
<em>(Picture linked from <a href="http://restx.io">restx.io</a> documentation)</em></p>
<p>After you do this, classes will be generated on each project build. Generated sources will appear and will be visible to search, autocompletion, and so on.</p>
</section>
<footer class="jumbotron">
<div class="container">
<h2 id="guides">Guides</h2>
<ul>
<li><a href="/getstarted.html">Get started!</a></li>
<li><a href="/intro.html">Inception</a></li>
<li><a href="/immutable.html">Immutable objects</a></li>
<li><a href="/factory.html">Factory builders</a></li>
<li><a href="/functional.html">Functions and Predicates (for Java 7)</a></li>
<li><a href="/style.html">Style customization</a></li>
<li><a href="/json.html">JSON serialization</a></li>
<li><a href="/criteria.html">Criteria</a></li>
<li><a href="/mongo.html">MongoDB repositories</a></li>
<li><a href="/dynamodb.html">DynamoDB integration</a></li>
<li><a href="/encoding.html">Encoding: Customizing attributes and builders (experimental)</a></li>
<li><a href="/apt.html">Using annotation processor in IDE</a></li>
</ul>
<h2 id="get-involved">Get involved</h2>
<ul>
<li>Clone source repository, contribute bug reports and fixes on <a href="https://github.com/immutables/immutables">GitHub immutables/immutables</a></li>
<li>Issue reports, questions and feedback is welcome on issue tracker <a href="https://github.com/immutables/immutables/issues">GitHub immutables/immutables/issues</a></li>
<li>News and announcements on twitter <a href="https://twitter.com/ImmutablesOrg">@ImmutablesOrg</a></li>
</ul>
<p><a href="/license.html">Apache License 2.0</a></p>
<!--<div><h2>Posts</h2>
<ul>
</ul>
</div>-->
</div>
</footer>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script defer src="/gfx/jquery.toc.min.js"></script>
<script>
$(function() {
$('#toc').toc({
container: '.documentation',
selectors: 'h1,h2,h3,h4',
anchorName: function(i, heading, prefix) {
heading = $(heading).text();
if (heading.trim) heading = heading.trim();
return heading.toLowerCase().replace(/ /g, '-').replace(/[^a-z^\-]+/g, '');
},
})
})
</script>
</body>
</html>