-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpom.xml
More file actions
361 lines (347 loc) · 14 KB
/
Copy pathpom.xml
File metadata and controls
361 lines (347 loc) · 14 KB
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
<?xml version="1.0" encoding="UTF-8"?>
<!--
The Java analyzer that runs *inside* jdt.ls.
This is an OSGi bundle (Tycho `eclipse-plugin` packaging), not a plain jar:
jdt.ls loads it through `contributes.javaExtensions` in the VS Code manifest,
and it registers a delegate command handler so the TypeScript side can invoke
it via `java.execute.workspaceCommand`.
Dependencies come from META-INF/MANIFEST.MF resolved against the p2 target
platform below — there is no <dependencies> section.
Build: mvn -B verify (from this directory; no wrapper is checked in
yet — add one with `mvn -N wrapper:wrapper`)
Output: target/org.leplus.catchme.jdt-1.0.0-SNAPSHOT.jar
-->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.leplus</groupId>
<!-- Tycho requires artifactId == Bundle-SymbolicName. -->
<artifactId>org.leplus.catchme.jdt</artifactId>
<!-- Must track Bundle-Version (1.0.0.qualifier) in META-INF/MANIFEST.MF. -->
<version>1.0.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<name>CatchMe JDT Analyzer</name>
<url>https://github.com/leplusorg/catchme</url>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<url>https://github.com/leplusorg/catchme/tree/main</url>
<connection>scm:git:https://github.com/leplusorg/catchme.git</connection>
<developerConnection>scm:git:ssh://git@github.com/leplusorg/catchme.git</developerConnection>
<tag>HEAD</tag>
</scm>
<organization>
<name>Leplus.org</name>
<url>https://www.leplus.org</url>
</organization>
<issueManagement>
<system>GitHub</system>
<url>https://github.com/leplusorg/catchme/issues</url>
</issueManagement>
<developers>
<developer>
<email>thomas@leplus.org</email>
<name>Thomas Leplus</name>
<url>https://www.leplus.org</url>
<id>leplusorg</id>
<roles>
<role>Project Lead</role>
</roles>
<organization>Leplus.org</organization>
<organizationUrl>https://www.leplus.org</organizationUrl>
</developer>
</developers>
<properties>
<!-- Reproducible builds; CI overrides via the source-date-epoch profile. -->
<project.build.outputTimestamp>2026-01-01T00:00:00Z</project.build.outputTimestamp>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<tycho.version>5.0.4</tycho.version>
<java.minVersion>21</java.minVersion>
<maven.javadoc.version>3.12.0</maven.javadoc.version>
<dependencyCheck.version>13.0.0</dependencyCheck.version>
<dependencyCheck.threshold>7</dependencyCheck.threshold>
<!-- Off unless an NVD API key reaches the build; the nvd-api-key profile
below turns it on. The scan genuinely cannot run without one: the NVD
API rejects an empty key outright rather than falling back to
anonymous access ("Invalid API Key, length of 0 too short"), and
keyless access is throttled to 5 requests per rolling 30s, which is
far too slow to populate the vulnerability cache from cold. Skipping
is the honest default - a scan that cannot fetch data proves nothing,
and failOnError below would otherwise break every build that has no
key. Get one (free) at https://nvd.nist.gov/developers/request-an-api-key
and see the profile for how to supply it.
This default is for humans, not for CI. Skipping is fine on a laptop,
where whoever ran the build knows what they got; it is not fine in a
pipeline, where a skipped scan and a clean one are the same shade of
green. So ci.yml refuses to build at all without the key rather than
relying on this. -->
<dependencyCheck.skip>true</dependencyCheck.skip>
<!-- Empty on purpose, and only ever read when the scan is skipped: the
profiles below supply the real values from the environment. An empty
key is worse than no key at all, which is what the NVD error above
was - so nothing here ever hands the plugin a blank credential. -->
<dependencyCheck.NVDApiKey></dependencyCheck.NVDApiKey>
<dependencyCheck.ossIndexPassword></dependencyCheck.ossIndexPassword>
<cyclonedx.skip>false</cyclonedx.skip>
<sigstore.skip>false</sigstore.skip>
</properties>
<repositories>
<!-- Eclipse platform + JDT. Recent trains require JavaSE-21 as the minimum EE. -->
<repository>
<id>eclipse-release</id>
<layout>p2</layout>
<url>https://download.eclipse.org/releases/2026-06/</url>
</repository>
<!-- jdt.ls, for org.eclipse.jdt.ls.core (the delegate-command extension point).
Pinned to a dated, immutable repository rather than .../repository/latest/,
which is a moving target that can break the build with no commit on our
side and makes old builds unreproducible.
This timestamp is the released jdt.ls 1.60.0 build
(jdt-language-server-1.60.0-202606262232), which pairs with the Eclipse
2026-06 platform pinned above. Note that jdt.ls publishes milestones as
tarballs only; the dated snapshot repositories are the sole p2 form, so
"snapshot" here denotes the layout, not an unstable build.
To bump: list https://download.eclipse.org/jdtls/snapshots/repository/
and pick the dated directory matching the jdt.ls release you want. -->
<repository>
<id>jdt-ls</id>
<layout>p2</layout>
<url>https://download.eclipse.org/jdtls/snapshots/repository/1.60.0.202606262232/</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${tycho.version}</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho.version}</version>
<configuration>
<executionEnvironment>JavaSE-21</executionEnvironment>
<environments>
<environment><os>macosx</os><ws>cocoa</ws><arch>aarch64</arch></environment>
<environment><os>macosx</os><ws>cocoa</ws><arch>x86_64</arch></environment>
<environment><os>linux</os><ws>gtk</ws><arch>x86_64</arch></environment>
<environment><os>linux</os><ws>gtk</ws><arch>aarch64</arch></environment>
<environment><os>win32</os><ws>win32</ws><arch>x86_64</arch></environment>
</environments>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-plugin</artifactId>
<version>${tycho.version}</version>
<configuration>
<source>${java.minVersion}</source>
<target>${java.minVersion}</target>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.16.0</version>
<configuration>
<release>${java.minVersion}</release>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<compilerArgs>
<arg>-Xlint:all</arg>
<arg>-Xdoclint:all</arg>
<arg>-Werror</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.4.0</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven.javadoc.version}</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<source>${java.minVersion}</source>
<show>private</show>
<nohelp>true</nohelp>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>${dependencyCheck.version}</version>
<configuration>
<failBuildOnCVSS>${dependencyCheck.threshold}</failBuildOnCVSS>
<failOnError>true</failOnError>
<nvdApiKey>${dependencyCheck.NVDApiKey}</nvdApiKey>
<ossIndexPassword>${dependencyCheck.ossIndexPassword}</ossIndexPassword>
<skip>${dependencyCheck.skip}</skip>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.28.0</version>
<configuration>
<printFailingErrors>true</printFailingErrors>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.10.4.1</version>
<configuration>
<effort>max</effort>
<threshold>Low</threshold>
<failOnError>true</failOnError>
<plugins>
<plugin>
<groupId>com.h3xstream.findsecbugs</groupId>
<artifactId>findsecbugs-plugin</artifactId>
<version>1.14.0</version>
</plugin>
</plugins>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven.javadoc.version}</version>
<configuration>
<source>${java.minVersion}</source>
<show>public</show>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.9.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>3.6.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.6.0</version>
<reportSets>
<reportSet>
<reports>
<report>checkstyle</report>
</reports>
</reportSet>
</reportSets>
<configuration>
<configLocation>google_checks.xml</configLocation>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
<violationSeverity>info</violationSeverity>
</configuration>
</plugin>
</plugins>
</reporting>
<profiles>
<profile>
<id>source-date-epoch</id>
<activation>
<property><name>env.SOURCE_DATE_EPOCH</name></property>
</activation>
<properties>
<project.build.outputTimestamp>${env.SOURCE_DATE_EPOCH}</project.build.outputTimestamp>
</properties>
</profile>
<!-- Enables the dependency-check scan, reading the key from the
environment so the secret is never passed on the command line, where
the process list would show it.
Activation is by presence rather than value, and the empty case is
the point: Maven activates a valueless <property> only when the
property is non-empty, and GitHub Actions expands an unconfigured
`${{ secrets.NVD_API_KEY }}` to the empty string. So a fork, or a
repository where the secret was never added, leaves the scan off
instead of failing the build with a blank credential.
To run it locally: NVD_API_KEY=... mvn verify. To force it on with
the key supplied some other way (a settings.xml server entry, say):
-DdependencyCheck.skip=false. -->
<profile>
<id>nvd-api-key</id>
<activation>
<property><name>env.NVD_API_KEY</name></property>
</activation>
<properties>
<dependencyCheck.skip>false</dependencyCheck.skip>
<dependencyCheck.NVDApiKey>${env.NVD_API_KEY}</dependencyCheck.NVDApiKey>
</properties>
</profile>
<!-- Sonatype OSS Index credentials, on the same terms. Independent of the
profile above because OSS Index is a separate analyzer: it only raises
the anonymous rate limit, so leaving this unset degrades the scan
rather than disabling it. -->
<profile>
<id>oss-index-password</id>
<activation>
<property><name>env.OSS_INDEX_PASSWORD</name></property>
</activation>
<properties>
<dependencyCheck.ossIndexPassword>${env.OSS_INDEX_PASSWORD}</dependencyCheck.ossIndexPassword>
</properties>
</profile>
</profiles>
</project>