-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpom.xml
More file actions
208 lines (194 loc) · 8.24 KB
/
Copy pathpom.xml
File metadata and controls
208 lines (194 loc) · 8.24 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
<?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>io.seatlayer</groupId>
<artifactId>seatlayer-java</artifactId>
<version>0.5.0</version>
<packaging>jar</packaging>
<name>SeatLayer Java SDK</name>
<description>Official Java server SDK for the SeatLayer reserved-seating API.</description>
<url>https://seatlayer.io/</url>
<licenses>
<license>
<name>MIT License</name>
<url>https://opensource.org/licenses/MIT</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<name>SeatLayer</name>
<email>hello@seatlayer.io</email>
<organization>SeatLayer</organization>
<organizationUrl>https://seatlayer.io</organizationUrl>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/seatlayer/seatlayer-java.git</connection>
<developerConnection>scm:git:ssh://git@github.com/seatlayer/seatlayer-java.git</developerConnection>
<url>https://github.com/seatlayer/seatlayer-java</url>
</scm>
<properties>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Fixed timestamp makes the jars byte-for-byte reproducible, so a rebuild
of a released tag can be diffed against what is on Central. -->
<project.build.outputTimestamp>2026-08-04T00:00:00Z</project.build.outputTimestamp>
<junit.version>5.11.4</junit.version>
</properties>
<!--
No runtime dependencies on purpose. A server SDK that drags in Jackson,
OkHttp and their transitive trees becomes a supply-chain surface for every
customer, and forces version conflicts on anyone already using different
ones. Java 17 ships java.net.http.HttpClient and javax.crypto.Mac; the only
thing missing is a JSON codec, which is ~200 lines and has no opinions to
conflict with.
-->
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!-- Ship the licence inside the jar, so the terms travel with the artifact
rather than only with the GitHub repo. -->
<resources>
<resource>
<directory>${project.basedir}</directory>
<targetPath>META-INF</targetPath>
<includes>
<include>LICENSE</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.1</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>3.11.2</version>
<configuration>
<!-- Central rejects a release whose javadoc does not build, and the
doclint groups that are fatal have changed between JDK releases.
Pin them: `all,-missing` keeps the checks that catch genuinely
broken javadoc (malformed tags, bad @link targets, invalid HTML)
and drops only "this member has no comment", which is a style
opinion and must never fail a release build. CI runs 17 and 21;
the publish may well happen on something newer. -->
<doclint>all,-missing</doclint>
<failOnError>true</failOnError>
<quiet>true</quiet>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals><goal>jar</goal></goals>
</execution>
</executions>
</plugin>
<!--
The publish path. Sonatype's Central Portal is the only way in for a
namespace registered today; the old OSSRH/nexus-staging route is closed
to new projects. `extensions=true` makes this the deploy handler, so
`mvn deploy` uploads a bundle here instead of looking for a
distributionManagement repository.
-->
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<!-- 0.7.0 could not parse the Portal's response: Central's API grew a
"warnings" field that the old model rejected outright, so an upload
that SUCCEEDED still failed the build on deserialisation. -->
<version>0.11.0</version>
<extensions>true</extensions>
<configuration>
<!-- Must match a <server><id> in ~/.m2/settings.xml. -->
<publishingServerId>central</publishingServerId>
<!--
Auto-publish: a tag push goes all the way to Central with no human
step (owner decision, 2026-08-07).
Know what this gives up. Central is the ONLY registry in this fleet
where a published version can never be replaced or deleted — PyPI and
RubyGems allow a yank, NuGet an unlist, Packagist republishes from
tags. `false` used to hold the deployment in the Portal as the last
moment a bad build could be dropped; that moment no longer exists.
What stands in its place is the release workflow's gate: the full
test suite, a tag-vs-<version> equality check, and GPG signing all
run BEFORE the upload, and any failure means nothing is sent. Those
checks are now the only thing between a tag and a permanent artifact,
so treat them as load-bearing and do not weaken them.
To go back: set this to false and publishing waits for a human at
https://central.sonatype.com/publishing/deployments
-->
<autoPublish>true</autoPublish>
<!--
`published`, not `validated`. With autoPublish on, stopping at
validated would let `mvn deploy` exit 0 while the publish is still in
flight — a failure after that point would never reach the build log.
Blocking until published means the workflow's result is the real
outcome rather than a promise of one.
-->
<waitUntil>published</waitUntil>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<!--
Signing lives in a profile so an ordinary `mvn verify` needs no GPG key.
Central rejects any artifact without a detached .asc signature, so the
release command must carry -Prelease; RELEASE.md spells that out and the
pre-flight check there proves the .asc files exist before uploading.
-->
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.7</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals><goal>sign</goal></goals>
<configuration>
<!-- Key and passphrase come from settings.xml properties or
the environment (MAVEN_GPG_KEY / MAVEN_GPG_PASSPHRASE),
never from this file. Loopback pinentry is what lets gpg
take the passphrase non-interactively on gpg 2.1+. -->
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>