I am trying to delete 2 Apex classes and 2 inactive Apex triggers from a production environment using the ANT Migration Tool and I am stone-walled by an INVALID_SESSION_ID error, but I suspect there's something more complicated going on here.
Looking for guidance. Any help on where to move forward from here would be greatly appreciated.
%ROOT%/ant-migration-tool/ant-salesforce.jar
%ROOT%/ant-migration-tool/build.xml (note: build.properties does contain my security token)
<project name="Trying to delete" default="test" basedir="." xmlns:sf="antlib:com.salesforce">
<property file="build.properties"/>
<property environment="env"/>
<!-- Setting default value for username, password and session id properties to empty string
so unset values are treated as empty. Without this, ant expressions such as ${sf.username}
will be treated literally.
-->
<condition property="sf.username" value=""> <not> <isset property="sf.username"/> </not> </condition>
<condition property="sf.password" value=""> <not> <isset property="sf.password"/> </not> </condition>
<condition property="sf.sessionId" value=""> <not> <isset property="sf.sessionId"/> </not> </condition>
<setproxy proxyHost="${proxy.host}" proxyPort="${proxy.port}"/>
<taskdef resource="com/salesforce/antlib.xml" uri="antlib:com.salesforce">
<classpath>
<pathelement location="ant-salesforce.jar" />
</classpath>
</taskdef>
<!-- Shows removing code; only succeeds if done after deployCode -->
<target name="removecodepkg">
<sf:deploy username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="removecodepkg"/>
</target>
%ROOT%/ant-migration-tool/removecodepkg/destructiveChanges.xml
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>codepkg</fullName>
<types>
<members>ClassIWantToDelete</members>
<members>TestClassForClassIWantToDelete</members>
<name>ApexClass</name>
</types>
<types>
<members>InactiveTriggerIWantToDelete</members>
<members>AnotherInactiveTriggerIWantToDelete</members>
<name>ApexTrigger</name>
</types>
<version>53.0</version>
</Package>
%ROOT%/ant-migration-tool/removecodepkg/package.xml
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>codepkg</fullName>
<types>
<members>ClassIWantToDelete</members>
<members>TestClassForClassIWantToDelete</members>
<name>ApexClass</name>
</types>
<types>
<members>InactiveTriggerIWantToDelete</members>
<members>AnotherInactiveTriggerIWantToDelete</members>
<name>ApexTrigger</name>
</types>
<version>53.0</version>
</Package>
This is what I get from ant -v removecodepkg
%ROOT%\ant-migration-tool\build.xml:24: Failed to login: Failed to send request to https://login.salesforce.com/services/Soap/u/54.0
Total time: 1 second
PS %ROOT%\ant-migration-tool> ant -v removecodepkg
Apache Ant(TM) version 1.10.12 compiled on October 13 2021
Trying the default build file: build.xml
Buildfile: %ROOT%\ant-migration-tool\build.xml
Detected Java version: 11 in: C:\Program Files\Zulu\zulu-11
Detected OS: Windows 10
parsing buildfile %ROOT%\ant-migration-tool\build.xml with URI = file:/%ROOT%/ant-migration-tool/build.xml
Project base dir set to: %ROOT%\ant-migration-tool
parsing buildfile jar:file:/C:/apache-ant-1.10.12/lib/ant.jar!/org/apache/tools/ant/antlib.xml with URI = jar:file:/C:/apache-ant-1.10.12/lib/ant.jar!/org/apache/tools/ant/antlib.xml from a zip file
[property] Loading %ROOT%\ant-migration-tool\build.properties
[property] Loading Environment env.
[setproxy] Setting proxy to proxy :8080
parsing buildfile jar:file:/%ROOT%/ant-migration-tool/ant-salesforce.jar!/com/salesforce/antlib.xml with URI = jar:file:/%ROOT%/ant-migration-tool/ant-salesforce.jar!/com/salesforce/antlib.xml from a zip file
Build sequence for target(s) `removecodepkg' is [removecodepkg]
Complete build sequence is [removecodepkg, ]
removecodepkg:
[antlib:com.salesforce] Could not load definitions from resource com/salesforce/antlib.xml. It could not be found.
[sf:deploy] Using proxy: proxy :8080
[sf:deploy] Note: use ant -verbose to get more information on the failure
BUILD FAILED
%ROOT%\ant-migration-tool\build.xml:24: Failed to login: Failed to send request to https://login.salesforce.com/services/Soap/u/54.0
at com.salesforce.ant.SFDCAntTask.doLogin(SFDCAntTask.java:237)
at com.salesforce.ant.SFDCAntTask.getMetadataConnection(SFDCAntTask.java:266)
at com.salesforce.ant.SFDCMDAPIAntTaskRunner.runTask(SFDCMDAPIAntTaskRunner.java:20)
at com.salesforce.ant.DeployTask.execute(DeployTask.java:63)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
at org.apache.tools.ant.Task.perform(Task.java:350)
at org.apache.tools.ant.Target.execute(Target.java:449)
at org.apache.tools.ant.Target.performTasks(Target.java:470)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1401)
at org.apache.tools.ant.Project.executeTarget(Project.java:1374)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1264)
at org.apache.tools.ant.Main.runBuild(Main.java:818)
at org.apache.tools.ant.Main.startAnt(Main.java:223)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:284)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:101)
Caused by: com.sforce.ws.ConnectionException: Failed to send request to https://login.salesforce.com/services/Soap/u/54.0
at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:128)
at com.sforce.soap.partner.PartnerConnection.login(PartnerConnection.java:845)
at com.salesforce.ant.SFDCAntTask.doLogin(SFDCAntTask.java:230)
... 20 more
Caused by: java.net.UnknownHostException: proxy
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:220)
at java.base/java.net.Socket.connect(Socket.java:609)
at java.base/java.net.Socket.connect(Socket.java:558)
at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
at java.base/sun.net.www.http.HttpClient$1.run(HttpClient.java:526)
at java.base/sun.net.www.http.HttpClient$1.run(HttpClient.java:524)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/sun.net.www.http.HttpClient.privilegedOpenServer(HttpClient.java:523)
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:564)
at java.base/sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:265)
at java.base/sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:372)
at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1227)
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081)
at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1362)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1337)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:246)
at com.sforce.ws.transport.JdkHttpTransport.connectRaw(JdkHttpTransport.java:143)
at com.sforce.ws.transport.JdkHttpTransport.connectLocal(JdkHttpTransport.java:103)
at com.sforce.ws.transport.JdkHttpTransport.connectLocal(JdkHttpTransport.java:98)
at com.sforce.ws.transport.JdkHttpTransport.connect(JdkHttpTransport.java:94)
at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:104)
... 22 more
Total time: 1 second