Merge tdlib and tdlight branches into a single source directory
This commit is contained in:
parent
da9942fd7a
commit
bee3e185f7
@ -89,11 +89,11 @@ dependencies {
|
|||||||
## Usage
|
## Usage
|
||||||
Simple initialization of a native TDLib client
|
Simple initialization of a native TDLib client
|
||||||
```java
|
```java
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
import it.tdlight.tdlight.Client;
|
import it.tdlight.tdlight.Client;
|
||||||
import it.tdlight.tdlight.Init;
|
import it.tdlight.common.Init;
|
||||||
import it.tdlight.tdlight.Log;
|
import it.tdlight.common.Log;
|
||||||
|
|
||||||
public class Example {
|
public class Example {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
package it.tdlight.tdlight.utils;
|
package it.tdlight.common.utils;
|
||||||
public final class LibraryVersion {
|
public final class LibraryVersion {
|
||||||
public static final String VERSION = "${project.version}";
|
public static final String VERSION = "${project.version}";
|
||||||
|
public static String IMPLEMENTATION_NAME = "tdlib";
|
||||||
}
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
package it.tdlight.common.utils;
|
||||||
|
public final class LibraryVersion {
|
||||||
|
public static final String VERSION = "${project.version}";
|
||||||
|
public static String IMPLEMENTATION_NAME = "tdlight";
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package it.tdlight.tdlight;
|
package it.tdlight.common;
|
||||||
|
|
||||||
import java.util.StringJoiner;
|
import java.util.StringJoiner;
|
||||||
|
|
@ -15,7 +15,7 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight;
|
package it.tdlight.common;
|
||||||
|
|
||||||
import it.tdlight.jni.TdApi;
|
import it.tdlight.jni.TdApi;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
@ -15,11 +15,11 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight;
|
package it.tdlight.common;
|
||||||
|
|
||||||
import it.tdlight.tdlight.utils.CantLoadLibrary;
|
import it.tdlight.common.utils.CantLoadLibrary;
|
||||||
import it.tdlight.tdlight.utils.LoadLibrary;
|
import it.tdlight.common.utils.LoadLibrary;
|
||||||
import it.tdlight.tdlight.utils.Os;
|
import it.tdlight.common.utils.Os;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Init class to successfully initialize Tdlib
|
* Init class to successfully initialize Tdlib
|
||||||
@ -38,12 +38,7 @@ public class Init {
|
|||||||
Os os = LoadLibrary.getOs();
|
Os os = LoadLibrary.getOs();
|
||||||
|
|
||||||
if (os == Os.win) {
|
if (os == Os.win) {
|
||||||
LoadLibrary.load("libstdc++-6");
|
// Since 3.0.0, libraries for windows are statically compiled into tdjni.dll
|
||||||
LoadLibrary.load("libwinpthread-1");
|
|
||||||
LoadLibrary.load("libgcc_s_seh-1");
|
|
||||||
LoadLibrary.load("libcrypto-3-x64");
|
|
||||||
LoadLibrary.load("libssl-3-x64");
|
|
||||||
LoadLibrary.load("zlib1");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadLibrary.load("tdjni");
|
LoadLibrary.load("tdjni");
|
@ -1,5 +1,6 @@
|
|||||||
package it.tdlight.tdlight;
|
package it.tdlight.common;
|
||||||
|
|
||||||
|
import it.tdlight.common.Init;
|
||||||
import it.tdlight.jni.FatalErrorCallbackPtr;
|
import it.tdlight.jni.FatalErrorCallbackPtr;
|
||||||
import it.tdlight.jni.NativeLog;
|
import it.tdlight.jni.NativeLog;
|
||||||
import it.tdlight.jni.TdApi;
|
import it.tdlight.jni.TdApi;
|
@ -15,7 +15,7 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight;
|
package it.tdlight.common;
|
||||||
|
|
||||||
import it.tdlight.jni.TdApi.Function;
|
import it.tdlight.jni.TdApi.Function;
|
||||||
|
|
@ -15,7 +15,7 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight;
|
package it.tdlight.common;
|
||||||
|
|
||||||
import it.tdlight.jni.TdApi.Object;
|
import it.tdlight.jni.TdApi.Object;
|
||||||
|
|
@ -15,7 +15,7 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight;
|
package it.tdlight.common;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An array of incoming updates from TDLib.
|
* An array of incoming updates from TDLib.
|
@ -1,4 +1,4 @@
|
|||||||
package it.tdlight.tdlight;
|
package it.tdlight.common;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
@ -15,7 +15,7 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight.utils;
|
package it.tdlight.common.utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enumeration with all architectures recognized by this library.
|
* Enumeration with all architectures recognized by this library.
|
@ -15,7 +15,7 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight.utils;
|
package it.tdlight.common.utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An exception that is thrown when the LoadLibrary class fails to load the library.
|
* An exception that is thrown when the LoadLibrary class fails to load the library.
|
@ -15,7 +15,7 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight.utils;
|
package it.tdlight.common.utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface of callback for receive notification of closing Tdlib.
|
* Interface of callback for receive notification of closing Tdlib.
|
@ -15,9 +15,9 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight.utils;
|
package it.tdlight.common.utils;
|
||||||
|
|
||||||
import it.tdlight.tdlight.Response;
|
import it.tdlight.common.Response;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface of callback for receive incoming error response.
|
* Interface of callback for receive incoming error response.
|
@ -15,7 +15,7 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight.utils;
|
package it.tdlight.common.utils;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -30,7 +30,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
*/
|
*/
|
||||||
public class LoadLibrary {
|
public class LoadLibrary {
|
||||||
private static ConcurrentHashMap<String, Boolean> libraryLoaded = new ConcurrentHashMap<>();
|
private static ConcurrentHashMap<String, Boolean> libraryLoaded = new ConcurrentHashMap<>();
|
||||||
private static Path librariesPath = Paths.get(".tdlight-libs-cache");
|
private static Path librariesPath = Paths.get("."+ LibraryVersion.IMPLEMENTATION_NAME + "-libs-cache");
|
||||||
private static final String libsVersion = LibraryVersion.VERSION;
|
private static final String libsVersion = LibraryVersion.VERSION;
|
||||||
|
|
||||||
static {
|
static {
|
@ -15,9 +15,9 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight.utils;
|
package it.tdlight.common.utils;
|
||||||
|
|
||||||
import it.tdlight.tdlight.Response;
|
import it.tdlight.common.Response;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface of callback for receive incoming error response.
|
* Interface of callback for receive incoming error response.
|
@ -15,7 +15,7 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight.utils;
|
package it.tdlight.common.utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enumeration with all operating systems recognized by this library.
|
* Enumeration with all operating systems recognized by this library.
|
@ -15,9 +15,9 @@
|
|||||||
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
* along with JTdlib. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package it.tdlight.tdlight.utils;
|
package it.tdlight.common.utils;
|
||||||
|
|
||||||
import it.tdlight.tdlight.Response;
|
import it.tdlight.common.Response;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface of callback for receive incoming update or request response.
|
* Interface of callback for receive incoming update or request response.
|
@ -1,4 +1,4 @@
|
|||||||
package it.tdlight.tdlight.utils;
|
package it.tdlight.common.utils;
|
||||||
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
54456
src/main/java/it/tdlight/jni/TdApi.java
Normal file
54456
src/main/java/it/tdlight/jni/TdApi.java
Normal file
File diff suppressed because it is too large
Load Diff
248
src/main/java/it/tdlight/tdlib/Client.java
Normal file
248
src/main/java/it/tdlight/tdlib/Client.java
Normal file
@ -0,0 +1,248 @@
|
|||||||
|
package it.tdlight.tdlib;
|
||||||
|
|
||||||
|
import it.cavallium.concurrentlocks.ReentrantReadWriteUpdateLock;
|
||||||
|
import it.tdlight.common.Init;
|
||||||
|
import it.tdlight.common.Request;
|
||||||
|
import it.tdlight.common.Response;
|
||||||
|
import it.tdlight.jni.NativeClient;
|
||||||
|
import it.tdlight.jni.TdApi;
|
||||||
|
import it.tdlight.jni.TdApi.AuthorizationStateClosed;
|
||||||
|
import it.tdlight.jni.TdApi.AuthorizationStateClosing;
|
||||||
|
import it.tdlight.jni.TdApi.AuthorizationStateWaitTdlibParameters;
|
||||||
|
import it.tdlight.jni.TdApi.GetOption;
|
||||||
|
import it.tdlight.jni.TdApi.Object;
|
||||||
|
import it.tdlight.jni.TdApi.SetOption;
|
||||||
|
import it.tdlight.jni.TdApi.UpdateAuthorizationState;
|
||||||
|
import it.tdlight.common.TelegramClient;
|
||||||
|
import it.tdlight.common.ClientState;
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface for interaction with TDLib.
|
||||||
|
*/
|
||||||
|
public class Client extends NativeClient implements TelegramClient {
|
||||||
|
|
||||||
|
private ClientState state = ClientState.of(false, 0, false, false, false);
|
||||||
|
private final ReentrantReadWriteUpdateLock stateLock = new ReentrantReadWriteUpdateLock();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new TDLib client.
|
||||||
|
*/
|
||||||
|
public Client() {
|
||||||
|
try {
|
||||||
|
Init.start();
|
||||||
|
} catch (Throwable throwable) {
|
||||||
|
throwable.printStackTrace();
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
this.initializeClient();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void send(Request request) {
|
||||||
|
long clientId;
|
||||||
|
stateLock.readLock().lock();
|
||||||
|
try {
|
||||||
|
requireInitialized();
|
||||||
|
requireReadyToSend(request.getFunction().getConstructor());
|
||||||
|
clientId = state.getClientId();
|
||||||
|
} finally {
|
||||||
|
stateLock.readLock().unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
nativeClientSend(clientId, request.getId(), request.getFunction());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Response> receive(double timeout, int eventsSize, boolean receiveResponses, boolean receiveUpdates) {
|
||||||
|
long clientId;
|
||||||
|
stateLock.updateLock().lock();
|
||||||
|
try {
|
||||||
|
if (!state.isInitialized()) {
|
||||||
|
sleep(timeout);
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
requireInitialized();
|
||||||
|
if (!state.isReadyToReceive()) {
|
||||||
|
sleep(timeout);
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
requireReadyToReceive();
|
||||||
|
clientId = state.getClientId();
|
||||||
|
return Arrays.asList(this.internalReceive(clientId, timeout, eventsSize, receiveResponses, receiveUpdates));
|
||||||
|
} finally {
|
||||||
|
stateLock.updateLock().unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sleep(double timeout) {
|
||||||
|
long nanos = (long) (timeout * 1000000000d);
|
||||||
|
int nanosPart = (int) (nanos % 1000000L);
|
||||||
|
long millis = Duration.ofNanos(nanos - nanosPart).toMillis();
|
||||||
|
try {
|
||||||
|
Thread.sleep(millis, nanosPart);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response receive(double timeout, boolean receiveResponses, boolean receiveUpdates) {
|
||||||
|
long clientId;
|
||||||
|
stateLock.updateLock().lock();
|
||||||
|
try {
|
||||||
|
if (!state.isInitialized()) {
|
||||||
|
sleep(timeout);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
requireInitialized();
|
||||||
|
if (!state.isReadyToReceive()) {
|
||||||
|
sleep(timeout);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
requireReadyToReceive();
|
||||||
|
clientId = state.getClientId();
|
||||||
|
|
||||||
|
Response[] responses = this.internalReceive(clientId, timeout, 1, receiveResponses, receiveUpdates);
|
||||||
|
|
||||||
|
if (responses.length > 0) {
|
||||||
|
return responses[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
} finally {
|
||||||
|
stateLock.updateLock().unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Response[] internalReceive(long clientId, double timeout, int eventsSize, boolean receiveResponses, boolean receiveUpdates) {
|
||||||
|
long[] eventIds = new long[eventsSize];
|
||||||
|
TdApi.Object[] events = new TdApi.Object[eventsSize];
|
||||||
|
|
||||||
|
if (!(receiveResponses && receiveUpdates)) {
|
||||||
|
throw new IllegalArgumentException("The variables receiveResponses and receiveUpdates must be both true, because you are using the original TDLib!");
|
||||||
|
}
|
||||||
|
|
||||||
|
int resultSize = nativeClientReceive(clientId, eventIds, events, timeout);
|
||||||
|
|
||||||
|
Response[] responses = new Response[resultSize];
|
||||||
|
|
||||||
|
for (int i = 0; i < resultSize; i++) {
|
||||||
|
responses[i] = new Response(eventIds[i], events[i]);
|
||||||
|
if (eventIds[i] == 0) {
|
||||||
|
handleStateEvent(events[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return responses;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleStateEvent(Object event) {
|
||||||
|
if (event == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.getConstructor() != UpdateAuthorizationState.CONSTRUCTOR) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateAuthorizationState updateAuthorizationState = (UpdateAuthorizationState) event;
|
||||||
|
|
||||||
|
switch (updateAuthorizationState.authorizationState.getConstructor()) {
|
||||||
|
case AuthorizationStateWaitTdlibParameters.CONSTRUCTOR:
|
||||||
|
stateLock.writeLock().lock();
|
||||||
|
try {
|
||||||
|
state.setReadyToSend(true);
|
||||||
|
} finally {
|
||||||
|
stateLock.writeLock().unlock();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AuthorizationStateClosing.CONSTRUCTOR:
|
||||||
|
stateLock.writeLock().lock();
|
||||||
|
try {
|
||||||
|
state.setReadyToSend(false);
|
||||||
|
} finally {
|
||||||
|
stateLock.writeLock().unlock();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AuthorizationStateClosed.CONSTRUCTOR:
|
||||||
|
stateLock.writeLock().lock();
|
||||||
|
try {
|
||||||
|
state.setReadyToSend(false).setReadyToReceive(false);
|
||||||
|
} finally {
|
||||||
|
stateLock.writeLock().unlock();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response execute(Request request) {
|
||||||
|
stateLock.readLock().lock();
|
||||||
|
try {
|
||||||
|
requireInitialized();
|
||||||
|
requireReadyToSend(request.getFunction().getConstructor());
|
||||||
|
} finally {
|
||||||
|
stateLock.readLock().unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
Object object = nativeClientExecute(request.getFunction());
|
||||||
|
return new Response(0, object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroyClient() {
|
||||||
|
stateLock.writeLock().lock();
|
||||||
|
try {
|
||||||
|
if (state.isInitialized() && state.hasClientId()) {
|
||||||
|
if (state.isReadyToSend() || state.isReadyToReceive()) {
|
||||||
|
throw new IllegalStateException("You need to close the Client before destroying it!");
|
||||||
|
}
|
||||||
|
destroyNativeClient(this.state.getClientId());
|
||||||
|
state = ClientState.of(false, 0, false, false, false);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
stateLock.writeLock().unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initializeClient() {
|
||||||
|
stateLock.writeLock().lock();
|
||||||
|
try {
|
||||||
|
if (!state.isInitialized() && !state.hasClientId()) {
|
||||||
|
long clientId = createNativeClient();
|
||||||
|
state = ClientState.of(true, clientId, true, true, false);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
stateLock.writeLock().unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void requireInitialized() {
|
||||||
|
if (!state.isInitialized() || !state.hasClientId()) {
|
||||||
|
throw new IllegalStateException("Client not initialized");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void requireReadyToSend(int constructor) {
|
||||||
|
if (!state.isReadyToSend()) {
|
||||||
|
switch (constructor) {
|
||||||
|
case SetOption.CONSTRUCTOR:
|
||||||
|
case GetOption.CONSTRUCTOR:
|
||||||
|
case TdApi.SetTdlibParameters.CONSTRUCTOR:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
throw new IllegalStateException("Client not ready to send");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void requireReadyToReceive() {
|
||||||
|
if (!state.isReadyToReceive()) {
|
||||||
|
throw new IllegalStateException("Client not ready to receive");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,10 @@
|
|||||||
package it.tdlight.tdlight;
|
package it.tdlight.tdlight;
|
||||||
|
|
||||||
|
import it.tdlight.common.ClientState;
|
||||||
|
import it.tdlight.common.Init;
|
||||||
|
import it.tdlight.common.Request;
|
||||||
|
import it.tdlight.common.Response;
|
||||||
|
import it.tdlight.common.TelegramClient;
|
||||||
import it.tdlight.jni.NativeClient;
|
import it.tdlight.jni.NativeClient;
|
||||||
import it.tdlight.jni.TdApi;
|
import it.tdlight.jni.TdApi;
|
||||||
import it.tdlight.jni.TdApi.AuthorizationStateClosed;
|
import it.tdlight.jni.TdApi.AuthorizationStateClosed;
|
||||||
|
137
tdlib/pom.xml
Normal file
137
tdlib/pom.xml
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
<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>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-java</artifactId>
|
||||||
|
<version>3.169.0-SNAPSHOT</version>
|
||||||
|
<name>TDLib Java Wrapper</name>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>mchv-release</id>
|
||||||
|
<name>MCHV Release Apache Maven Packages</name>
|
||||||
|
<url>https://mvn.mchv.eu/repository/mchv</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>mchv-snapshot</id>
|
||||||
|
<name>MCHV Snapshot Apache Maven Packages</name>
|
||||||
|
<url>https://mvn.mchv.eu/repository/mchv-snapshot</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<distributionManagement>
|
||||||
|
<repository>
|
||||||
|
<id>mchv-release-distribution</id>
|
||||||
|
<name>MCHV Release Apache Maven Packages Distribution</name>
|
||||||
|
<url>https://mvn.mchv.eu/repository/mchv</url>
|
||||||
|
</repository>
|
||||||
|
<snapshotRepository>
|
||||||
|
<id>mchv-snapshot-distribution</id>
|
||||||
|
<name>MCHV Snapshot Apache Maven Packages Distribution</name>
|
||||||
|
<url>https://mvn.mchv.eu/repository/mchv-snapshot</url>
|
||||||
|
</snapshotRepository>
|
||||||
|
</distributionManagement>
|
||||||
|
<scm>
|
||||||
|
<connection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java.git</connection>
|
||||||
|
<developerConnection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java.git</developerConnection>
|
||||||
|
<tag>HEAD</tag>
|
||||||
|
</scm>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-natives-linux-amd64</artifactId>
|
||||||
|
<version>2.0.2</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-natives-linux-aarch64</artifactId>
|
||||||
|
<version>2.0.2</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-natives-windows-amd64</artifactId>
|
||||||
|
<version>2.0.2</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- Currently unsupported platform
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-natives-osx-amd64</artifactId>
|
||||||
|
<version>2.0.1-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.cavallium</groupId>
|
||||||
|
<artifactId>concurrent-locks</artifactId>
|
||||||
|
<version>1.0.5</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>../src/main/java</sourceDirectory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-clean-plugin</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<version>3.0.2</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<configuration>
|
||||||
|
<encoding>UTF-8</encoding>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
<excludes>
|
||||||
|
<exclude>it/tdlight/tdlight/**</exclude>
|
||||||
|
</excludes>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-release-plugin</artifactId>
|
||||||
|
<version>3.0.0-M1</version>
|
||||||
|
<configuration>
|
||||||
|
<pushChanges>false</pushChanges>
|
||||||
|
<remoteTagging>false</remoteTagging>
|
||||||
|
<preparationGoals>clean verify</preparationGoals>
|
||||||
|
<localCheckout>true</localCheckout>
|
||||||
|
<tagNameFormat>v@{project.version}</tagNameFormat>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>3.0.2</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-install-plugin</artifactId>
|
||||||
|
<version>3.0.0-M1</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-deploy-plugin</artifactId>
|
||||||
|
<version>2.8.2</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>templating-maven-plugin</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>filtering-java-templates</id>
|
||||||
|
<goals>
|
||||||
|
<goal>filter-sources</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<sourceDirectory>../src/main/java-templates-tdlib</sourceDirectory>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
@ -63,8 +63,14 @@
|
|||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
-->
|
-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.cavallium</groupId>
|
||||||
|
<artifactId>concurrent-locks</artifactId>
|
||||||
|
<version>1.0.5</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<build>
|
<build>
|
||||||
|
<sourceDirectory>../src/main/java</sourceDirectory>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<artifactId>maven-clean-plugin</artifactId>
|
<artifactId>maven-clean-plugin</artifactId>
|
||||||
@ -108,6 +114,9 @@
|
|||||||
<encoding>UTF-8</encoding>
|
<encoding>UTF-8</encoding>
|
||||||
<source>1.8</source>
|
<source>1.8</source>
|
||||||
<target>1.8</target>
|
<target>1.8</target>
|
||||||
|
<excludes>
|
||||||
|
<exclude>it/tdlight/tdlib/**</exclude>
|
||||||
|
</excludes>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
@ -144,6 +153,9 @@
|
|||||||
<goals>
|
<goals>
|
||||||
<goal>filter-sources</goal>
|
<goal>filter-sources</goal>
|
||||||
</goals>
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<sourceDirectory>../src/main/java-templates-tdlight</sourceDirectory>
|
||||||
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
Loading…
x
Reference in New Issue
Block a user